Note: The other languages of the website are Google-translated. Back to English

Como comparar duas strings para semelhança ou destacar diferenças no Excel?

Em alguns casos, você só precisa comparar duas células adjacentes de strings e marcar suas semelhanças ou diferenças no Excel. Este artigo fornece dois métodos para você conseguir isso.

Compare duas strings com fórmula
Compare duas strings para semelhanças ou destaque as diferenças com o código VBA


Compare duas strings com fórmula

Como mostrado na captura de tela abaixo, se você apenas deseja saber se as strings comparadas são correspondidas ou não, você pode aplicar a seguinte fórmula.

1. Selecione uma célula em branco C2, insira a fórmula = EXATO (A2, B2) na Barra de Fórmulas e, em seguida, pressione a tecla Enter. Veja a imagem:

Importante: Na fórmula, A2 e B2 são as células que contêm as strings de comparação.

2. Continue selecionando a célula de resultado e arraste o identificador de preenchimento para as células até obter todos os resultados comparados.

O resultado FALSE significa que as strings comparadas são diferentes, e o resultado TRUE indica que as duas strings comparadas são correspondidas. Veja a imagem:


Compare duas strings para semelhanças ou destaque as diferenças com o código VBA

Se você quiser comparar duas strings e destacar as semelhanças ou diferenças entre elas. O seguinte código VBA pode ajudá-lo.

1. Pressione outro + F11 simultaneamente para abrir o Microsoft Visual Basic para Aplicações janela.

2. No Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo. Em seguida, copie e cole o código a seguir na janela de código.

Código VBA: compare duas strings de coluna para semelhanças ou destaque as diferenças

Sub highlight()
    Dim xRg1 As Range
    Dim xRg2 As Range
    Dim xTxt As String
    Dim xCell1 As Range
    Dim xCell2 As Range
    Dim I As Long
    Dim J As Integer
    Dim xLen As Integer
    Dim xDiffs As Boolean
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg1 = Application.InputBox("Range A:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg1 Is Nothing Then Exit Sub
    If xRg1.Columns.Count > 1 Or xRg1.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
lTwo:
    Set xRg2 = Application.InputBox("Range B:", "Kutools for Excel", "", , , , , 8)
    If xRg2 Is Nothing Then Exit Sub
    If xRg2.Columns.Count > 1 Or xRg2.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lTwo
    End If
    If xRg1.CountLarge <> xRg2.CountLarge Then
       MsgBox "Two selected ranges must have the same numbers of cells ", vbInformation, "Kutools for Excel"
       GoTo lTwo
    End If
    xDiffs = (MsgBox("Click Yes to highlight similarities, click No to highlight differences ", vbYesNo + vbQuestion, "Kutools for Excel") = vbNo)
    Application.ScreenUpdating = False
    xRg2.Font.ColorIndex = xlAutomatic
    For I = 1 To xRg1.Count
        Set xCell1 = xRg1.Cells(I)
        Set xCell2 = xRg2.Cells(I)
        If xCell1.Value2 = xCell2.Value2 Then
            If Not xDiffs Then xCell2.Font.Color = vbRed
        Else
            xLen = Len(xCell1.Value2)
            For J = 1 To xLen
                If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then Exit For
            Next J
            If Not xDiffs Then
                If J <= Len(xCell2.Value2) And J > 1 Then
                    xCell2.Characters(1, J - 1).Font.Color = vbRed
                End If
            Else
                If J <= Len(xCell2.Value2) Then
                    xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbRed
                End If
            End If
        End If
    Next
    Application.ScreenUpdating = True
End Sub

3. aperte o F5 chave para executar o código. Em primeiro Kutools for Excel caixa de diálogo, selecione a primeira coluna de strings de texto que você precisa comparar e clique no botão OK botão.

4. Então o segundo Kutools for Excel caixa de diálogo aparece, selecione as sequências da segunda coluna e clique no OK botão.

5. No último Kutools for Excel caixa de diálogo, se você deseja comparar strings de semelhança, clique no Sim botão. E para destacar as diferenças das strings comparadas, clique no Não botão. Veja a imagem:

Então você pode ver os resultados comparados conforme a imagem mostrada abaixo.


Artigos relacionados:


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2019 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Teste gratuito de 30 dias com recursos completos. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (15)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Caro senhor, Muito obrigado pelo seu código VBA. É muito útil. Na verdade eu não tenho nenhum conhecimento sobre codificação. Portanto, mesmo para modificar uma pequena parte da codificação de acordo com minha necessidade, estou impotente, tenho uma solicitação sobre essa codificação para torná-la mais eficiente e amigável. Podes ajudar-me, por favor?? O principal objetivo da codificação acima é encontrar e destacar as diferenças entre os dados em duas colunas para facilitar a referência. Mas, essa codificação é um pouco complicada no que diz respeito ao objetivo. Porque, está considerando os "espaços" entre o conteúdo e destaca os dados inteiros mesmo que as strings sejam as mesmas. Portanto, se pudermos comparar os dados sem espaços, podemos filtrar a parte dos dados destacados. Além disso, em vez de destacar apenas as strings que não são semelhantes, está destacando dados inteiros desde a primeira string diferente até os dados até o final da célula. Portanto, gostaria de concluir meu pedido abaixo de 2 pontos. 1) edite a codificação para comparar as células sem considerar os espaços 2) edite a codificação de tal forma que possa destacar apenas strings diferentes, mas não destacar todo o parágrafo do primeiro ponto de string diferente. Muito obrigado por sua ajuda. Atenciosamente, Surya
Este comentário foi feito pelo moderador no site
eu tenho o mesmo pedido que suryateja.
2) edite a codificação de tal forma que ela possa destacar apenas strings diferentes, mas não destacar todo o parágrafo do primeiro ponto de string diferente.
Este comentário foi feito pelo moderador no site
A dose de código acima não funciona se alguma célula contiver fórmula.
Este comentário foi feito pelo moderador no site
Obrigado!
Este comentário foi feito pelo moderador no site
Preciso saber como posso identificar strings com o mesmo formato de texto para poder vincular uma conta a todas essas strings. Por exemplo, se eu tiver 1,000 células com conteúdo diferente, quero separar aquelas que têm formato 042-XXX-XX-00 para vinculá-las a um acct#.
Este comentário foi feito pelo moderador no site
Olá
Como faço para copiar a Coluna1 ao lado da Coluna2 se um ou mais itens na Coluna 1 se assemelham/são idênticos a um ou mais itens na Coluna2?
Sinto muito, mas estou trabalhando com Excel VBA há algum tempo e não consigo encontrar a resposta para esta pergunta.
Agradeço antecipadamente pela sua resposta.
Este comentário foi feito pelo moderador no site
Olá
Como faço para copiar a Coluna1 ao lado da Coluna2 se um ou mais itens na Coluna 1 se assemelham/são idênticos a um ou mais itens na Coluna2?
Sinto muito, mas estou trabalhando com Excel VBA há algum tempo e não consigo encontrar a resposta para esta pergunta.
Agradeço antecipadamente pela sua resposta.
Este comentário foi feito pelo moderador no site
Roteiro muito útil! obrigado
Este comentário foi feito pelo moderador no site
Como posso obter o número de diferença entre duas strings?

Exemplo: "123456" e "213456" ==> 2 diferença
Este comentário foi feito pelo moderador no site
só quero agradecer!
Este comentário foi feito pelo moderador no site
Eu esperava tanto que isso funcionasse. Parece comparar células inteiras e não caracteres dentro das células. Simplesmente comparar Candy em uma célula com Andy em outra não encontra semelhanças. E quando comparo as diferenças, todo o nome Andy é destacado em vermelho.
Este comentário foi feito pelo moderador no site
OBRIGADA! isso é apenas o que eu precisava!
Este comentário foi feito pelo moderador no site
Para evitar qualquer problema deste código com os espaços que devem estar no valor ASCII 32 ou 160 (especialmente se a string vier de HTML) você precisa incluir a linha de teste 46 em um loop if endif como abaixo:
Se Não ((Asc(xCell1.Characters(J, 1).Text) = 32 Ou Asc(xCell1.Characters(J, 1).Text) = 160) E (Asc(xCell2.Characters(J, 1).Text) ) = 32 Ou Asc(xCell2.Characters(J, 1).Texto) = 160)) Então
(linha 46 If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then Exit For)
Se acabar

Mesmo assim obrigado pelo código.
Este comentário foi feito pelo moderador no site
Como adiciono isso corretamente? Estou recebendo um erro quando tentei substituir a linha 46. Obrigado
Este comentário foi feito pelo moderador no site
no seu exemplo, as palavras "vamos tentar" são semelhantes, mas seu código não pode destacá-lo.
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0  Personagens
Locais sugeridos