如何使用VBA执行带动态查找_值的excel vlookup?
我是VBA新手,需要使用动态如何使用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
查找值执行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