У меня есть две таблицы Excel, в которых перечислены имена людей в разных форматах.
На одном листе перечислены имена, отформатированные как «First Last», упорядочены имена по отделам и не указаны их идентификационные номера.
На другом листе перечислены имена, отформатированные как «Last, First», упорядочены в алфавитном порядке, не отображается их отдел и указан их идентификационный номер.
Что мне нужно сделать, это получить имена и идентификационные номера людей из конкретных отделов. Перестановка имен и фамилий для соответствия не была проблемой. Проблема в том, что иногда имена не совпадают.
Например:
На листе 1 указано имя «Джон Смит»
На листе 2 указано имя «Смит-младший, Джон»
В этом примере я бы искал на листе 2 слова «Смит, Джон» и не дал результатов.
К сожалению, этими листами управляют другие люди, поэтому я не могу вносить изменения в листы.
Здесь я разделил имя от листа 1 и отформатировал его как лист 2.
Dim nameTemp() As String = Split(CType(curSheet.Range("J" & xlRow).Value, String))
name = Trim(nameTemp(1)) + ", " + Trim(nameTemp(0))
Здесь я смотрю на втором листе на совпадения. Это пропускает любые имена, в которых Jr, III, II и т. Д. Перечислены на втором листе, но не на первом.
idRange = curSheet.UsedRange.Find(What:=name, LookAt:=XlLookAt.xlPart)
Я искал способ поиска ячеек, содержащих обе подстроки:
nameTemp(0) and nameTemp(1)
Использование метода UsedRange.Find, если это возможно.
Я пробовал:
idRange = curSheet.UsedRange.Find(What:=(nameTemp(0) And nameTemp(1)), LookAt:=XlLookAt.xlPart)
И
idRange = curSheet.UsedRange.Find(What:=nameTemp(0)What:=nameTemp(1), LookAt:=XlLookAt.xlPart)
И другие сценарии, которые я не документировал.