如何使用VBA执行带动态查找_值的excel vlookup?

如何使用VBA执行带动态查找_值的excel vlookup?,vba,excel,Vba,Excel,我是VBA新手,需要使用动态查找值执行vlookup。原因是,对于不同的输入工作表,实际查找值列可以位于不同的列索引上 原始的vlookup公式如下所示: "=VLOOKUP(C2,lookup!$A$2:$B$14,2,FALSE)" 'static vlookup 我要完成的应该是这样的: "=VLOOKUP(C2,lookup!$A$2:$B$14,2,FALSE)" 'static vlookup 1)查找包含查找值的实际列索引(在上述情况下为C2) 2)动态设置查找值(在本例中为C

我是VBA新手,需要使用动态
查找值执行
vlookup
。原因是,对于不同的输入工作表,实际查找值列可以位于不同的列索引上

原始的vlookup公式如下所示:

"=VLOOKUP(C2,lookup!$A$2:$B$14,2,FALSE)" 'static vlookup
我要完成的应该是这样的:

"=VLOOKUP(C2,lookup!$A$2:$B$14,2,FALSE)" 'static vlookup
1)查找包含查找值的实际列索引(在上述情况下为C2)

2)动态设置查找值(在本例中为C2)

3)将查找的动态参考值设置为实际vlookup公式(即参考C2重新编程硬编码C2

但是,(3)产生
运行时错误'91'对象变量或未设置块变量


如何使用VBA执行带动态查找值的excel vlookup?

首先,在此处反转列和行:

ws.Cells(FiltCol,2)

应该是:

ws.Cells(2,FiltCol) 
其次,设置一个范围:

Set dynamic_lookup_value = ws.Cells(2,FiltCol) 
然后不在引号内放置变量,而是用
&

foobar = "=VLOOKUP(" & dynamic_lookup_value.Address(0,0) & ",lookup!$A$2:$B$14,2,FALSE)" 
另一条建议:

FiltCol=FindRng.Column

如果找不到该值,则将出错。将其放入If语句以检查是否找到该值:

If  not FindRng is nothing Then
    ...
End IF

工作起来很有魅力!部分在我的原始代码中,我只是删除了它,因为如果我的示例代码变长,人们往往不会回答-再次:谢谢man@sudonym可以理解,但是下一个遇到这个问题的人可能不知道,所以我将把它留在这里。很高兴能帮忙。
foobar = "=VLOOKUP(" & dynamic_lookup_value.Address(0,0) & ",lookup!$A$2:$B$14,2,FALSE)" 
If  not FindRng is nothing Then
    ...
End IF