Excel VBA工作表函数索引与数组匹配

问题描述 投票:0回答:1

使用.worksheetfunction时,是否可以通过INDEX MATCH将VBA转移到除数组公式之外的其他方法?

我的第一个公式起作用,因为它不是我假定的数组?

此代码有效

Dim VType As string
VType = Application.WorksheetFunction.Index(Sheets(sheetname).Range("$B:$B"), Application.WorksheetFunction.Match("*" & VendorCode & "*", Sheets(sheetname).Range("$A:$A"), 0), 1)

但是当我添加第二个匹配项时,我得到了一个错误:类型不匹配

Dim RetORWaste As String
RetORWaste = Application.WorksheetFunction.Index(Sheets(wsMaster.Name).Range("$F:$F"), Application.WorksheetFunction.Match(("*" & VendorCode & "*") & ("*" & VRegion & "*"), (Sheets(wsMaster.Name).Range("$B:$B")) & (Sheets(wsMaster.Name).Range("$C:$C")), 0), 1)

sheetname和wsMaster.name都是字符串。wsMaster.Name也将获取正确的工作表名称。所以它一定是数组吗?

arrays excel vba match worksheet-function
1个回答
0
投票

如果我正确理解您要进行“两列匹配”,如下所示:https://www.excel-easy.com/examples/two-column-lookup.html

Sub tester()

    Dim RetORWaste As String, wsMaster As Worksheet, m, f
    Dim VendorCode, VRegion

    Set wsMaster = ActiveSheet

    VendorCode = "A"
    VRegion = "B"

    f = "=MATCH(""*{vend}*""&""*{region}*"",B:B&C:C,0)"
    f = Replace(f, "{vend}", VendorCode)
    f = Replace(f, "{region}", VRegion)

    m = wsMaster.Evaluate(f)

    If Not IsError(m) Then
        RetORWaste = wsMaster.Cells(m, "F")
        Debug.Print RetORWaste
    End If

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.