Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 具有多个“;col_index_num”;_Vba_Excel - Fatal编程技术网

Vba 具有多个“;col_index_num”;

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

对于在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.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