Como identificar duplicatas no texto em duas colunas no Excel

3

Eu tenho uma planilha onde a coluna A tem vários nomes em formatos variados:
A1 John Smith
A2 Jones, Mary
A3 Sally Gomez
A4 A família Gonzalez

A coluna B tem dados semelhantes:
B1 o Smith Família Confiança
B2 Bob e Mary Jones
B3 Blackwell, John
B4 Luz Gonzalez

Gostaria de identificar as instâncias em que o mesmo sobrenome é encontrado na coluna A e na coluna B. Nos exemplos acima, a fórmula, se colocada na coluna C, resultaria em

C1 TRUE (porque "Smith" é encontrado em A1 e B1)
C2 TRUE (porque "Jones" é encontrado em A2 e B2)
C3 FALSE (porque não há palavras comuns entre A3 e B3)
C4 TRUE (porque "Gonzalez" é encontrado em A4 e B4)

Isso é possível?

    
por candez 01.05.2015 / 06:26

4 respostas

2

Dados seus comentários e sua pergunta, parece que você deseja retornar TRUE se alguma palavra em uma frase corresponder a uma palavra na frase adjacente. Uma maneira de fazer isso é com uma função definida pelo usuário (VBA). O seguinte exclui todas as palavras que estão em arrExclude , que você pode adicionar como achar melhor. Também excluirá quaisquer caracteres que não sejam letras, dígitos ou espaços e quaisquer palavras que consistam em apenas um caractere.

Veja se isso funciona para você.

Outra opção seria dar uma olhada no suplemento gratuito de pesquisa difusa fornecido pelo MS para as versões do Excel 2007 e posterior.

Para inserir essa função definida pelo usuário (UDF), alt-F11 abre o Editor do Visual Basic. Certifique-se de que seu projeto esteja destacado na janela Explorador de Projetos. Então, no menu superior, selecione Insert/Module e cole o código abaixo na janela que é aberta.

Para usar esta função definida pelo usuário (UDF), insira uma fórmula como

=WordMatch(A1,B1)

em algumas células.

EDIT2: % segmentoFind Matches alterado para ver se funciona melhor no Mac

Option Explicit
Option Base 0
Option Compare Text
Function WordMatch(S1 As String, S2 As String) As Boolean
    Dim arrExclude() As Variant
    Dim V1 As Variant, V2 As Variant
    Dim I As Long, J As Long, S As String
    Dim RE As Object
    Dim sF As String, sS As String

'Will also exclude single letter words
arrExclude = Array("The", "And", "Trust", "Family", "II", "III", "Jr", "Sr", "Mr", "Mrs", "Ms")

'Remove all except letters, digits, and spaces
'remove extra spaces
'Consider whether to retain hyphens

Set RE = CreateObject("vbscript.regexp")
With RE
    .Pattern = "[^A-Z0-9 ]+|\b\S\b|\b(?:" & Join(arrExclude, "|") & ")\b"
    .Global = True
    .ignorecase = True
End With

With WorksheetFunction
    V1 = Split(.Trim(RE.Replace(S1, "")))
    V2 = Split(.Trim(RE.Replace(S2, "")))
End With

'Find Matches
If UBound(V1) <= UBound(V2) Then
    sS = " " & Join(V2) & " "
    For I = 0 To UBound(V1)
        sF = " " & V1(I) & " "
        If InStr(sS, sF) > 0 Then
            WordMatch = True
            Exit Function
        End If
    Next I
Else
    sS = " " & Join(V1) & " "
    For I = 0 To UBound(V2)
        sF = " " & V2(I) & " "
        If InStr(sS, sF) > 0 Then
            WordMatch = True
            Exit Function
        End If
    Next I
End If

WordMatch = False

End Function

EDITAR: Aqui está uma captura de tela dos resultados, usando seus exemplos originais e também os exemplos que você deu em um comentário abaixo, onde você indicou que estava com um problema.

    
por 03.05.2015 / 19:45
1

A parte mais difícil deste exercício é determinar o que, na coluna A, constitui um sobrenome. No seu exemplo, é:

  1. A primeira palavra, se houver uma vírgula em todo o nome
  2. A segunda palavra

Se essa regra for verdadeira, você pode simplesmente fazer uma fórmula como esta:

=NOT(ISERROR(FIND(last_name, B1:B4)))

A fórmula para determinar o sobrenome é um pouco mais complexa. Você essencialmente tem que descobrir em quais posições de caractere os espaços estão, e então puxar as letras entre elas. Há uma boa explicação neste tópico:

link

    
por 01.05.2015 / 06:39
0

Na célula C1, use esta fórmula Link

=IF(VLOOKUP(B1:B4,A:A,1)=B1,"",B1)
    
por 01.05.2015 / 06:55
0

Realce as duas colunas > formatação condicional (guia inicial) > destacar regras da célula > valores duplicados. Isso realçará todas as duplicatas nas duas colunas. Certifique-se de destacar as colunas e não as células.

    
por 03.05.2015 / 19:55