首页 文章

VBA嵌套索引匹配语法错误

提问于
浏览
0

我在将嵌套索引/匹配公式转换为VBA时遇到问题 . 该公式适用于Excel但在VBA中我得到“编译错误:预期:表达式”

上下文

我正在寻找一个Userform,用户将选择一个状态,然后根据他们选择的状态告诉他们三个供应商中的哪一个是主要,次要或第三选择 . 这个想法是下面公式中的状态,单元格G2将通过Userform传递给公式 . 再次,该公式在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 回答

  • 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
    

相关问题