VBA嵌套索引匹配语法错误

时间:2018-07-31 18:42:19

标签: excel vba excel-vba

我无法将嵌套的索引/匹配公式转换为VBA。该公式在Excel中有效,但在VBA中,我收到“编译错误:预期:表达式”

上下文

我正在寻找一个用户表单,供用户选择状态,然后根据状态选择,告知他们三个供应商中的哪个是主要,次要或三次选择。想法是,状态(以下公式中的单元格G2)将通过用户窗体传递给公式。同样,该公式在Excel中也可以正常工作。

=INDEX(B1:D1,MATCH(G3,INDEX(B3:D23,MATCH(G2,A3:A23,0),),0))

Sample Data

下面是我在VBA中拥有的代码。下面是我遇到的错误的屏幕截图。

Sub LookUpTest()

Dim output As String

output = Application.WorksheetFunction.Index(Range("B1:D1"), 
Application.WorksheetFunction.Match(Range("G3"), 
Application.WorksheetFunction.Index(Range("B3:D23"), 
Application.WorksheetFunction.Match(Range("G2"), (Range("A3:A23")),0),),0))

Range("G8").Value = output

End Sub

Debug error

我明白了调试器引发错误的原因,如您所见here Row参数保留为空白,但公式仍然在Excel中有效。

我在VBA方面缺少什么/如何更改代码以使其正常工作?谁能向我解释为什么这首先在Excel中起作用?我在网上找到了该公式,并对其进行了更改以适合我的用例,但老实说,我不明白为什么缺少Row参数却无法奏效。

1 个答案:

答案 0 :(得分:1)

认为这将起作用:

Sub LookUpTest()

    Dim output As String

    With Application.WorksheetFunction
        output = .Index(Range("B1:D1"), .Match(Range("G3"), .Index(Range("B3:D23"), .Match(Range("G2"), Range("A3:A23"), 0)), 0))
    End With

    Range("G8").Value = output
End Sub