VBA Excel vlookup循环问题

VBA Excel vlookup循环问题

问题描述:

在包含订单的Excel电子表格中,我的VBA代码出现问题。每行都包含一个客户编号,用于查找工作簿中不同工作表中包含的客户电子邮件地址。VBA Excel vlookup循环问题

对于单个单元格,vlookup代码工作正常,但问题是当我尝试遍历电子表格的所有行时。 Excel公式用于单个细胞是,例如,

=VLOOKUP(B2,Customers!A2:D1000,4,FALSE) 

此生成的VBA代码是:

Range("M2").Select 
ActiveCell.FormulaR1C1 = _ 
    "=VLOOKUP(RC[-11],Customers!RC[-12]:R[999]C[-9],4,FALSE)" 

并入的环路这一点,选择所述起始细胞后,我有以下:

Cells(2, 13).Select 
Do 
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-11],Customers!RC[-12]:R[999]C[-9],4,FALSE)" 
    ActiveCell.Offset(1, 0).Select 
Loop Until IsEmpty(ActiveCell.Offset(0, -10))  

的问题是,我想要的“表阵列”是固定,而不是相对于其值正在被查找的细胞。但我绝对不知道如何去做。如果我更改代码如下,我得到一个运行时错误:

ActiveCell.FormulaR1C1 = _ 
    "=VLOOKUP(RC[-11],Customers!A2:D1000,4,FALSE)" 

我已经试过报价,unquoting,设置了一系列变量,使用范围变量,。地址...可有人帮帮我?

非常感谢。

我很确定你的R1C1公式中的方括号表明你正在指定一个相对范围(特别是在它们的负值范围内)。如果要指定绝对范围,则需要指定R1C1单元格而不包含括号;例如R2C2:R4C4。

举个简单的例子:

Sub test() 
    Sheet1.Range("C5").FormulaR1C1 = "=VLOOKUP(1,R1C1:R3C3,2,FALSE)" 
End Sub 

运行这给你一个绝对的 “A1” 式在C5单元格公式。

我认为你的问题可能是:

Customers!RC[-12]:R[999]C[-9] 

因为它是一个相对的范围。您必须明确指定数据表的位置;例如Customers!RC12:R999C9(你需要找出它在你的工作表上的位置)。

解决这个问题的简单方法是在工作表上突出显示数据表,然后切换到Visual Basic编辑器并手动运行(将光标置于Sub内,然后按'播放'按钮或转到运行 - >运行)。

Sub test2() 
    Dim r As Range 
    Set r = Application.Selection 
    InputBox "your r1c1 range:", , r.Address(True, True, xlR1C1) 
End Sub 
+0

你是对的,参考文献确实是相对的,我一直在努力弄清楚如何指定绝对范围。感谢您的评论,我会尝试一下,让你知道它是如何发生的。 – carol

+0

窍门!我不能够感谢你。 :) – carol

+0

很高兴听到它! – transistor1