Vba 具有多个“;col_index_num”;
对于在VBA中编写要返回多个列的VLookup,我一直坚持正确的语法 通常您使用{2,3,4,5},但是VBA不接受这一点Vba 具有多个“;col_index_num”;,vba,excel,Vba,Excel,对于在VBA中编写要返回多个列的VLookup,我一直坚持正确的语法 通常您使用{2,3,4,5},但是VBA不接受这一点 Set Sheet1 = ActiveWorkbook.Sheets(1) Set Sheet2 = ActiveWorkbook.Sheets(2) Set Sheet3 = ActiveWorkbook.Sheets(2) result = Application.WorksheetFunction.VLookup(Sheet2.Range("A2"), Sheet1
Set Sheet1 = ActiveWorkbook.Sheets(1)
Set Sheet2 = ActiveWorkbook.Sheets(2)
Set Sheet3 = ActiveWorkbook.Sheets(2)
result = Application.WorksheetFunction.VLookup(Sheet2.Range("A2"), Sheet1.Range("AA9:AF20"), {2,3,5,6,7,8,9}, False)
我已经在网上搜索了很多关于这个解决方案的信息,但是对于如何正确地语法
{2,3,5,6,7,8,9}
工作表函数
不能执行数组公式,还没有一个明确的答案<代码>评估可以
所以
但是从AA
到AF
只有6列。因此,尝试获取第7、8、9列将导致错误
所以也许
sFormula = "VLOOKUP(" & Sheet2.Range("A2").Address(external:=True) & "," & Sheet1.Range("AA9:AI20").Address(external:=True) & ",{2,3,5,6,7,8,9},FALSE)"
result = Evaluate(sFormula)
试着像这样循环
sub Mlookup()
dim i as integer
dim res
for i = 1 to 5
res = Application.WorksheetFunction.VLookup(Sheet2.Range("A2"), Sheet1.Range("AA9:AF20"), i, False)
sheet1.range("A"&i").value = res
next i
end sub
出于兴趣,你为什么要这么做?最好使用
Match
检查您想要的值是否存在,然后使用Rows
返回您想要的整行。
sub Mlookup()
dim i as integer
dim res
for i = 1 to 5
res = Application.WorksheetFunction.VLookup(Sheet2.Range("A2"), Sheet1.Range("AA9:AF20"), i, False)
sheet1.range("A"&i").value = res
next i
end sub