Trouver la partie de la chaîne qui distingue une chaîne d'une cellule d'une chaîne d'une autre cellule

1

J'ai deux colonnes avec des chaînes et je veux savoir quelles parties de la chaîne d'une colonne ont avec l'autre colonne. J'ai vérifié cette solution Comparer 2 cellules de texte et montrer la différence dans la troisième cellule | Super utilisateur mais cela ne fonctionne pas pour mon problème.

Dans la capture d' écran ci - dessous, je veux la colonne de résultat d'avoir la chaîne Elementarypuisque c'est ce qui différencie B2de A2. J'ai essayé d'utiliser =SUBSTITUTE(A2,B2,"")basé sur la solution dans le lien ci-dessus, mais ce que la formule fait est le contraire en affichant les chaînes communes dans les deux colonnes:

Formule capture d'écran

Comment puis-je lui faire afficher la différence de chaîne ( Elementary) à la place?

JAT86
la source

Réponses:

3

Comment puis-je lui faire afficher la différence de chaîne (élémentaire)?

Voici une fonction personnalisée appelée WORDDIFqui peut faire ce que vous voulez.

Pour installer la fonction personnalisée ...

  • Alt + F11 pour ouvrir l'éditeur VBA
  • Dans le menu VBA, sélectionnez Insertion> Module.
  • Collez le code ci-dessous dans la fenêtre VBA Edit

De retour dans Excel, mettez cette formule en C1

=WORDDIF(A1,B1)

Code:

Function WORDDIF(rngA As Range, rngB As Range) As String

    Dim WordsA As Variant, WordsB As Variant
    Dim ndxA As Long, ndxB As Long, strTemp As String

    WordsA = Split(rngA.Text, " ")
    WordsB = Split(rngB.Text, " ")

    For ndxB = LBound(WordsB) To UBound(WordsB)
        For ndxA = LBound(WordsA) To UBound(WordsA)
            If StrComp(WordsA(ndxA), WordsB(ndxB), vbTextCompare) = 0 Then
                WordsA(ndxA) = vbNullString
                Exit For
            End If
        Next ndxA
    Next ndxB

    For ndxA = LBound(WordsA) To UBound(WordsA)
        If WordsA(ndxA) <> vbNullString Then strTemp = strTemp & WordsA(ndxA) & " "
    Next ndxA

    WORDDIF = Trim(strTemp)

End Function

Source https://www.mrexcel.com/forum/excel-questions/486708-compare-two-strings-find-difference.html

DavidPostill
la source
Je ne peux pas croire qu'Excel 2016 n'ait pas nativement cette fonction extrêmement utile. Merci beaucoup.
JAT86
@ JAT86 Excel est principalement une application de tableur pas un outil de gestion de texte. Il existe une infinité de "fonctions extrêmement utiles" non incluses nativement.
Máté Juhász