Excel VBA:如何返回部分匹配

时间:2015-07-01 15:32:20

标签: excel vba excel-vba match

我已经查看了问题,似乎无法找到答案。

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

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

一个例子是:

系统1:

  • AAAA0000001
  • AAAA0000002
  • AAAA0000003
  • AAAA0000004
  • ....
  • ZZZZ9999999

系统2:

  • AAAA0000001
  • AAAA0000002
  • AAAA0000003 / AAAA000004 - 这将是退款和购买
  • AAAA0000005
  • ....
  • ZZZZ9999999

我使用的代码是:

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

代码返回运行时错误1004。

有什么方法可以让代码接受双项作为匹配并返回答案?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

如果我已经理解了你所匹配的内容,你可以使用:

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