-1

У меня есть огромный файл, похожий на тот, что ниже. Я хотел бы иметь возможность сравнить группу слов в столбце A с группой слов в столбце B и получить "Нет совпадения", "Точное совпадение" или "Частичное совпадение" в столбце C. Я основной пользователь с формул и может использовать VBA для сохранения и запуска макросов.

Небольшие заметки, столбцы имеют дубликаты, и сравнение необходимо проводить только по ячейкам за ячейкой (например, A1 с B1). Это поможет даже более простая форма. Спасибо.

A - classement fifa, classico barca real, клавье араб, клермон ферран

B - футбол с зеленой травой, отель Европа, Клавье Араб, Ферран

C - Нет совпадений, Нет совпадений, Точное совпадение, Частичное совпадение

  1. Я пробовал варианты VLOOKUP и SEARCH, но безрезультатно.
  2. Я пробовал текст в столбцы, а затем VLOOKUP 2 набора текстов, но он все равно покажет частичные данные, которые я не могу использовать.
  3. Самый близкий ответ, который я мог получить, - Как сравнить два столбца в Excel, чтобы выделить слова, которые не совпадают? но когда я запускаю макрос для всех моих столбцов, он игнорирует дубликаты и не сравнивает A1 с B1, кажется, что он проверяет A:A с B:B, и мне все еще нужно вручную проверять отсутствие совпадений, точное совпадение и частичное Матч, который занимает очень много времени.

Я хотел бы сопоставить целые слова с частичными словами при поиске частичных совпадений -

Cup vs Cupboard = Partial
Cupcake vx Cupboard = No Match

2 ответа2

1

Попробуйте этот маленький UDF():

Public Function comparee(s1 As String, s2 As String) As String
    comparee = "No Match"
    If s1 = s2 Then
        comparee = "Exact match"
        Exit Function
    End If

    arr1 = Split(s1, ", ")
    arr2 = Split(s2, ", ")
    For Each a1 In arr1
        For Each a2 In arr2
            If a1 = a2 Then
                comparee = "Partial"
                Exit Function
            End If
        Next a2
    Next a1
End Function

0

Вот решение, которое я нашел на другом форуме:

Function GetMatches(s1 As String, s2 As String)
    Dim spl1 As Variant, spl2 As Variant, i As Long

    If s1 = s2 Then GetMatches = "Exact Match": Exit Function

    spl1 = Split(Application.Trim(s1))
    spl2 = Split(Application.Trim(s2))

    For i = 0 To UBound(spl1)
           If Not IsError(Application.Match(spl1(i), spl2, 0)) Then GetMatches = GetMatches & " " & spl1(i)
    Next i
    If Len(GetMatches) = 0 Then
        GetMatches = "No Match"
    Else
        GetMatches = Application.Trim(GetMatches)
    End If
End Function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .