Excel VBA: 如何 return 部分匹配

Excel VBA: How to return a partial match

我查看了所有问题,但似乎找不到答案。

我在电子表格中有一个由系统 1 创建的收据 ID 列表。在另一个电子表格中,我也有一个由系统 2 创建的相同收据的列表。

90+% 的信息呈现相同,我可以 运行 使用 worksheetfunction.match 匹配。但是,有一种特定类型的收据(退款和购买)在系统 2 中具有不同的格式。

例如:

系统 1:

系统 2:

我使用的代码是:

While MC > MD

    Worksheets("ID sheet").Activate                             ' activate ID sheet

    MF = WorksheetFunction.VLookup(MD, Range("U2:W" & Range("U1")), 2, False)   ' Vlookup for System 1 letters
    MG = WorksheetFunction.VLookup(MD, Range("U2:W" & Range("U1")), 3, False)   ' Vlookup for System 1 numbers
    MH = MF & MG                                                ' combine GFAS and Fund IDs

     Worksheets("System 1").Activate                ' Activate System 1 screen
        MI = WorksheetFunction.Match(MH, Range("HC:HC"), 0)         ' Match combined letters and numbers for System 1
        MK = Range("A" & MI)                                        ' Find deal ID

        Worksheets("System 2").Activate                         ' Activate System 2 screen
        ML = WorksheetFunction.Match(MK, Range("W:W"), 0)           ' Match deal ID in Range W
        MM = Range("F" & ML)                                        ' Find Register ID

        MD = MD + 1

    Wend

代码return是一个运行时间错误1004。

有什么方法可以让代码接受双重输入作为匹配项并 return 一个答案?

非常感谢任何帮助。

如果我明白你在匹配什么,你可以使用:

MI = WorksheetFunction.Match("*" & MH & "*", Range("HC:HC"), 0)