Compare sequencialmente os valores separados por Coma de duas colunas e forneça os valores correspondentes - Ajuda necessária

0

Oi eu tenho um desafio onde eu tenho que comparar os valores separados de coma de 2 colunas (Coluna A, Coluna B e encontrar os valores correspondentes sequencialmente separados por vírgula e saída para a coluna Resultados.

Exemplo:

Compare os valores "Coluna A" (Coma Separated) com "Coluna B" (Coma Separated) e imprima os valores de correspondência sequencialmente separados por vírgula (Coma Separated) para a coluna "Result"

Qualquer ajuda é muito apreciada.

    
por Chandra Singh 18.03.2018 / 11:02

1 resposta

0

Para gerar "os valores correspondentes correspondentes separados por vírgulas", gostaria de sugerir o código VBA em vez de qualquer fórmula complexa, que é mais rápida e melhor.

  1. Pressione ALT + F11 para abrir as janelas do Editor VB.
  2. Selecione a Planilha na janela Explorador de Projetos.
  3. Clique com o botão direito e selecione Inserir, Módulo.
  4. Copiar & Cole os dois.

Como usar: =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
    
por 19.03.2018 / 11:49