Сравнение строк между двумя ячейками, содержащими текст, но одной, содержащей несколько разделителей
Я хотел бы сравнить две ячейки в Excel, которые содержат похожий текст, но в одной содержатся разные разделители. Я хочу игнорировать разделители при сравнении строк.
Например.
John Doe: Mary Ann. Are Married/
John Doe Mary Ann Are Married
Я абсолютно не знаю макросов. Любые выводы приветствуются!
2 ответа
Вы можете попробовать это:
Function CompareByLetter(t1 As String, t2 As String) As Boolean
CompareByLetter = CleanString(t1) = CleanString(t2)
End Function
Function CleanString(t As String) As String
Dim t1, x, c
For x = 1 To Len(t)
c = Asc(UCase(Mid(t, x, 1)))
If (c >= 65 And c <= 90) Or c = 32 Then t1 = t1 & Mid(t, x, 1)
Next x
CleanString = t1
End Function
Тогда вы можете использовать его в качестве формулы:
=CompareByLetter(A1,A2)
Этот макрос просто сравнивает строки, сохраняя только буквы и пробелы.
Вы также можете использовать =CleanString(A1)
удалить все остальные символы из ваших строк.
Чтобы использовать это в своем проекте, откройте Excel и нажмите ALT+F11
Щелкните правой кнопкой мыши на левой стороне и выберите Insert -> Module
Вставьте код в окно модуля справа (см. В приложении).
Зеркальное отображение изображений, так как хостинг изображений Stackru выглядит неработающим
После этого вы сможете использовать функции так же, как и формулу.
Просто введите =CompareByLetter(A1,A2)
в клетке.
Если у вас Office 365 Excel, тогда мы можем использовать эту формулу массива:
=TEXTJOIN("",TRUE,IF(((CODE(UPPER(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1)))>=65)*(CODE(UPPER(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1)))<=90))+(CODE(UPPER(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1)))=32),MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1),""))=TEXTJOIN("",TRUE,IF(((CODE(UPPER(MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1)))>=65)*(CODE(UPPER(MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1)))<=90))+(CODE(UPPER(MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1)))=32),MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1),""))
Будучи формулой массива, она должна быть подтверждена Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования. Если все сделано правильно, то Excel поставит {}
вокруг формулы.