在vba中以数组形式使用表(索引,匹配,vlookup函数)

时间:2018-10-04 13:32:29

标签: arrays vba match vlookup

尝试在vba中创建函数以执行索引匹配功能。我正在引用一个excel表,并且我想引用标题而不是列号。 下面是我创建并工作的工作表。

=VLOOKUP(C4, Table2, MATCH(C5,Table2[#Headers],0), 0)

当我将此功能放入VBA时,无法使阵列正常工作。我认为...

MATCH(C5,Table2[#Headers],0)

需要从下面这样的代码开始。

ActiveSheet.ListObjects("Table2").ListColumns ("d") 
ActiveSheet.ListObject("Table2[d]")

1 个答案:

答案 0 :(得分:0)

您可以通过其标题引用ListColumn,然后使用其Index属性。

如果您的查找值位于C4中,而列名位于C5中,请尝试执行以下操作:

Sub Test()

    With Sheet1
        Dim myTbl As ListObject
        Set myTbl = .ListObjects("Table2")

        Dim indx As Integer
        indx = myTbl.ListColumns(.Range("C5").Value).Index

        Dim result As Variant
        result = Application.VLookup(.Range("C4").Value, myTbl.Range, indx, 0)

        MsgBox result
    End With

End Sub

样本表和数据:

enter image description here