Здравствуйте, у меня есть проблема, где я должен сравнить отдельные значения комы из 2 столбцов (столбец A, столбец B и найти последовательно соответствующие запятые соответствующие значения и вывод в столбец Results.

Пример:

Сравните значения в столбце "A" (с разделением запятыми) с "столбцом B" (с разделением запятыми) и выведите последовательно соответствующие значения, разделенные запятыми (с разделением запятыми), в столбец "Результат"

Любая помощь с благодарностью.

1 ответ1

0

Чтобы сгенерировать «последовательно соответствующие значения, разделенные запятыми», я хотел бы предложить вам код VBA вместо любой сложной формулы, которая работает быстрее и лучше.

  1. Нажмите ALT+F11, чтобы открыть окна VB Editor.
  2. Выберите лист из окна Project Explorer.
  3. Щелкните правой кнопкой мыши и выберите Вставить, Модуль.
  4. Затем скопируйте и вставьте оба.

Как использовать: =GetDiffs1(A2,B2)&", "& GetDiffs2(A2,B2)

Function GetDiffs1(Cell1 As Range, Cell2 As Range) As String
Dim Array1, Array2, lLoop As Long
Dim strDiff As String, strDiffs As String
Dim lCheck As Long


Array1 = Split(Replace(Cell1, " ", ""), ",")
Array2 = Split(Replace(Cell2, " ", ""), ",")
On Error Resume Next
With WorksheetFunction
    For lLoop = 0 To UBound(Array1)
        strDiff = vbNullString
        strDiff = .Index(Array2, 1, .Match(Array1(lLoop), Array2, 0))
        If strDiff = vbNullString Then
            lCheck = 0
            lCheck = .Match(Array1(lLoop), Array2, 0)

            If lCheck = 0 Then
                strDiffs = strDiffs & "," & Array1(lLoop)
            End If
        End If

    Next lLoop
End With

GetDiffs1 = Trim(Right(strDiffs, Len(strDiffs) - 1))
End Function

Function GetDiffs2(Cell1 As Range, Cell2 As Range) As String
Dim Array1, Array2, lLoop As Long
Dim strDiff As String, strDiffs As String
Dim lCheck As Long


Array1 = Split(Replace(Cell1, " ", ""), ",")
Array2 = Split(Replace(Cell2, " ", ""), ",")
On Error Resume Next
With WorksheetFunction
    For lLoop = 0 To UBound(Array2)
        strDiff = vbNullString
        strDiff = .Index(Array1, 1, .Match(Array2(lLoop), Array1, 0))
        If strDiff = vbNullString Then
            lCheck = 0
            lCheck = .Match(Array2(lLoop), Array1, 0)

            If lCheck = 0 Then
                strDiffs = strDiffs & "," & Array2(lLoop)
            End If
        End If

    Next lLoop
End With

GetDiffs2 = Trim(Right(strDiffs, Len(strDiffs) - 1))
End Function

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