使用Excel VBA的VLookup() - 要查找的值的数量是可变的

时间:2015-09-16 18:46:49

标签: excel vba vlookup

我需要在文件A中使用vlookup,它引用文件B中包含两列(用户和国家/地区)的数据集。

每次完成vlookup时,文件A列A中的用户数都会有所不同,因此我需要一些考虑到这一点的VBA代码。到目前为止我用宏录制器构建并且只要每次运行宏时存在相同数量的用户就可以正常工作,但情况并非如此。

这是我到目前为止的代码,它执行vlookup然后将其自动填充到第113行。就像我说的那样,直到我最终有114个用户,并且此时vlookups停止了。

ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[-1],'[AD Data 9-8-15.xls]showAllUsersReport'!C1:C2,2,FALSE)"

Selection.AutoFill Destination:=Range("B2:B113"), Type:=xlFillDefault

我是否需要修改此代码或插入完全不同的内容?

1 个答案:

答案 0 :(得分:3)

您可以跳过Range.AutoFill method,只需一次性编写公式。

dim lr as long
with activesheet
    lr = .cells(rows.count, 1).end(xlup).row
    .range(.cells(2, 2), .cells(lr, 2)).FormulaR1C1 = _
       "=VLOOKUP(RC[-1],'[AD Data 9-8-15.xls]showAllUsersReport'!C1:C2,2,FALSE)"
    .range("C2:C" & lr).formula = "=TODAY()-1"
    'for a static date (one that will not change tomorrow) use the following instead
    '.range("C2:C" & lr) = Date - 1
end with

我无法从你的样本中知道你的公式实际开始的位置。这个在B2中启动并将列B填充到A列中的最后一个单元格。看起来您的样本可能实际上是从B1开始但我无法确定。