Comparer deux chaînes de caractères indépendamment des positions des mots dans Google Sheets

Avez-vous déjà voulu comparer deux phrases indépendamment de la séquence des mots qu’elles contiennent ? Laissez-moi vous montrer une astuce géniale à l’aide d’une formule Google Sheets pour comparer deux chaînes de caractères, peu importe leur position dans les mots. J’espère que cela vous sera utile.

Comparer deux chaînes de caractères est assez simple si les positions des mots sont identiques. Avec une formule simple de Google Sheets, vous pouvez le tester comme suit.

Supposons que les cellules A1 et B1 contiennent la même phrase « Brésil et Canada ». Ensuite, il suffit de taper la formule ci-dessous dans la cellule C1. Elle renverra VRAI puisque les deux valeurs correspondent.

=A1=B1

Mais que se passe-t-il si la cellule B1 contient « Canada et Brésil » ? Sans aucun doute, la formule ci-dessus renverrait FAUX.

Si vous vérifiez mot par mot, en réalité, les deux chaînes sont identiques. Mais la séquence des mots n’est pas la même. C’est pourquoi la formule ci-dessus renvoie FAUX. Je veux une formule qui renvoie VRAI dans ce cas.

Je vais donc créer une formule qui compare deux chaînes de caractères indépendamment des positions des mots dans Google Sheets.

Compare two strings irrespective of the word positions in Sheets

Pour cela, j’utilise une combinaison des fonctions SPLIT et SEARCH. Voici comment coder cette formule géniale.

Formule Google Sheets pour comparer deux chaînes de caractères indépendamment des positions des mots

Pour expliquer comment coder cette formule à des fins d’illustration, je prends les exemples de données fournis dans la capture d’écran ci-dessus.

Ma formule sera donc dans la cellule D1 de cette feuille. Pour simplifier et vous aider à comprendre, je vais vous fournir une formule non matricielle.

Elle peut comparer les deux chaînes de caractères dans une seule ligne. Cela signifie que pour inclure des lignes supplémentaires, vous devez faire glisser la poignée de remplissage de la cellule contenant la formule vers le bas.

J’ai également une formule matricielle que je fournirai à la fin de ce tutoriel. Vous pouvez l’utiliser telle quelle. Alors, nous y voilà.

Formule non matricielle qui compare deux chaînes de caractères en ignorant la séquence des mots

Étape 1:

Dans cette étape, je vais diviser la chaîne de caractères de la cellule C1. Cela renverra les mots suivants (voir l’image).

=split(C1," ")

Étape 2:

La formule renvoie trois chaînes de caractères. Nous pouvons maintenant vérifier si ces trois chaînes de caractères sont présentes dans la cellule B1.

Nous vérifions plusieurs chaînes de caractères. Nous devons donc utiliser la fonction ArrayFormula avec la fonction Search.

=ArrayFormula(search(split(C1," "),B1))

Étant donné que les trois clés de recherche (chaînes de caractères) sont présentes dans la cellule B1, la formule renverra 3 numéros représentant la position de chaque chaîne de caractères. En cas d’incompatibilité, la formule renverra l’erreur #VALUE!.

Search function in array use returns value error

À partir de cela, nous pouvons en déduire une chose. Si tous les mots de la phrase/chaîne de caractères de la cellule C1 sont présents dans la chaîne de caractères de la cellule B1, il n’y aura aucune erreur dans la sortie.

Maintenant, nous devons faire le même test avec la chaîne de caractères de la cellule B1.

Étape 3:

J’espère que vous avez compris les deux formules ci-dessus. Je vous fournis directement la combinaison de Search et Split.

=ArrayFormula(search(split(B1," "),C1))

Avec cette formule, tout comme dans l’exemple précédent, nous pouvons vérifier si tous les mots de la cellule B1 sont présents ou non dans la cellule C1.

Étape 4:

Combinons les formules des étapes 2 et 3 comme suit.

Formula compares two strings irrespective of the positions of word

Cette formule compare deux chaînes de caractères indépendamment des positions des mots dans Google Sheets. En cas d’incompatibilité, la formule renverra au moins une erreur #VALUE!.

Nous pouvons donc utiliser enfin la formule ci-dessus comme suit pour renvoyer VRAI pour une correspondance et FAUX pour une incompatibilité.

Étape 5:

En utilisant la fonction IFERROR avec la formule ci-dessus, nous pouvons remplacer toutes les erreurs #VALUE! par la valeur de notre choix.

L’idée ici est la suivante. Le nombre que nous utilisons pour remplacer les erreurs doit être supérieur au total de la sortie de la formule de recherche. Je remplace les erreurs par la valeur 1000. Pourquoi ?

Tout d’abord, voyez la formule ci-dessous. Ensuite, j’essaierai de vous expliquer la logique du nombre mentionné ci-dessus.

=ArrayFormula(IFERROR({search(split(C1," "),B1),search(split(B1," "),C1)},1000))

À l’étape suivante, je ferai la SOMME de la sortie. Si la somme des valeurs est supérieure ou égale à 1000, cela signifie qu’il y a au moins une incompatibilité. C’est la logique derrière l’utilisation du nombre 1000 pour remplacer les valeurs d’erreur dans la sortie de recherche.

Je peux utiliser le test logique SI (cela ou cela) pour renvoyer VRAI/FAUX en fonction de la sortie.

Formule finale:

Vous pouvez utiliser cette formule dans la cellule D1 et la copier vers le bas pour comparer des chaînes de caractères sans tenir compte de la position des mots.

=if(sum(ArrayFormula(IFERROR({search(split(C1," "),B1),search(split(B1," "),C1)},1000)))>=100,FALSE,TRUE)

Formule matricielle qui compare deux chaînes de caractères en ignorant la séquence des mots

J’ai converti la formule ci-dessus en une formule matricielle. Vous pouvez donc simplement la saisir dans la cellule D1 et laisser la formule se développer.

=ArrayFormula(if(len(B1:B),(IF(MMULT(IFERROR(IF(LEN(B1:B),{search(split(C1:C," "),B1:B),search(split(B1:B," "),C1:C)},0),10000),SIGN(ROW(INDIRECT("A1:A"&COLUMNS(ArrayFormula(IFERROR(IF(LEN(B1:B),{search(split(C1:C," "),B1:B),search(split(B1:B," "),C1:C)},),99999)))))))>=10000,FALSE,TRUE)),))

J’ai utilisé la même logique ici. Étant donné que plusieurs lignes sont impliquées, j’ai utilisé MMULT pour sommer les valeurs dans chaque ligne au lieu de la fonction SOMME. Cela rend la lecture un peu plus difficile.

Je ne vais pas essayer d’expliquer cette formule, mais vous pouvez l’utiliser telle quelle. Remplacez C1:C et B1:B dans cette formule par les colonnes qui contiennent les chaînes de caractères que vous souhaitez comparer. Laissez A1:A dans la formule tel qu’il est.

C’est tout. J’espère que vous avez apprécié votre passage !

Crawlan.com

Articles en lien