【发布时间】:2017-12-05 03:16:33
【问题描述】:
我是 VBA 新手,需要使用动态 lookup_value 执行 vlookup。原因是实际的 lookup_value 列可以位于不同输入工作表的不同列索引上。
原始的 vlookup 公式如下所示:
"=VLOOKUP(C2,lookup!$A$2:$B$14,2,FALSE)" 'static vlookup
我想要完成的应该是这样的:
1) 查找内部带有lookup_value的实际列索引(在上述情况下为C2)
With ws
Set FindRng = .Rows(1).Find(what:="Column Name") ' should be 3 for C
FiltCol = FindRng.Column ' get the column number where "Column Name" was found
End With
2) 动态设置lookup_value(在本例中为C2)
Dim dynamic_lookup_value as Range
dynamic_lookup_value = ws.Cells(FiltCol, 2) ' should be column C cell 2
3) 将 lookup_value 的动态引用设置为实际的 vlookup 公式(即,将硬编码的 C2 替换为 C2 的引用)
foobar = "=VLOOKUP(dynamic_lookup_value,lookup!$A$2:$B$14,2,FALSE)" 'dynamic vlookup
但是,(3) 产生Run-time error '91' Object variable or With-block variable not set。
如何使用 VBA 执行带有动态 lookup_value 的 excel vlookup?
【问题讨论】: