Я просмотрел вопросы и не могу найти ответа.Excel VBA: Как вернуть частичное совпадение
У меня есть список идентификаторов поступления в электронной таблице, созданный системой 1. В другой таблице, я также иметь список те же поступления, созданный системой 2.
90 +% от информации представили то же самое, и я могу запустить Match, используя workheetfunction.match. Однако, существует особый тип получения (возврата и покупки), который имеет другой формат в системе 2.
Примером может быть:
Система 1:
- AAAA0000001
- AAAA0000002
- AAAA0000003
- AAAA0000004
- ....
- ZZZZ9999999
System 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.
Есть ли способ, что я могу получить код, чтобы принять двойную запись как матч и вернуть ответ?
Любая помощь с благодарностью оценена.
Относящиеся к ошибке: скорее всего, это вызвано тем, что функция .Match возвращает ошибку, если он не находит ничего, поэтому вам придется проверить это: 'If Not IsError (MI) Then'. Другой способ получить частичное совпадение - использовать функцию .Find() –
@paulbica. Я пробовал этот метод, но, похоже, проблема связана с тем, что блок кода находится в цикле WHILE. Теперь я получаю сообщение об ошибке, в котором говорится, что у меня есть WEND без WHILE. – Clauric
Обновите код, указанный в вопросе, чтобы включить полный контекст (где находится строка While). Легче выявлять проблемы, если вы включаете полную функцию. –