Сравнение строк между двумя ячейками, содержащими текст, но одной, содержащей несколько разделителей

Я хотел бы сравнить две ячейки в 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

Вставьте код в окно модуля справа (см. В приложении).

Окно VBA

Зеркальное отображение изображений, так как хостинг изображений 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 поставит {} вокруг формулы.

Другие вопросы по тегам