Instruction Excel IF pour une correspondance partielle de texte (caractère générique)

  • Partage Ça
Michael Brown

Vous essayez de créer une instruction IF avec du texte générique, mais elle échoue à chaque fois ? Le problème ne vient pas de votre formule, mais de la fonction elle-même : Excel IF ne prend pas en charge les caractères génériques. Cependant, il existe un moyen de la faire fonctionner pour une correspondance partielle de texte, et ce tutoriel vous apprendra comment.

Lorsque vous souhaitez effectuer une correspondance partielle ou floue dans Excel, la solution la plus évidente est d'utiliser des caractères génériques. Mais que se passe-t-il si une fonction spécifique que vous devez utiliser ne prend pas en charge les caractères génériques ? Malheureusement, Excel IF est l'une de ces fonctions. C'est particulièrement décevant si l'on considère que d'autres fonctions "conditionnelles" telles que COUNTIF, SUMIF et AVERAGEIFS fonctionnent parfaitement avec les caractères génériques.

Heureusement, ce n'est pas l'obstacle qui peut arrêter un utilisateur créatif d'Excel :) En combinant IF avec d'autres fonctions, vous pouvez le forcer à évaluer une correspondance partielle et obtenir une alternative intéressante à une formule joker Excel IF.

    Pourquoi la fonction IF d'Excel avec un caractère générique ne fonctionne pas

    Dans l'exemple de tableau ci-dessous, supposons que vous souhaitiez vérifier si les ID de la première colonne contiennent la lettre "A". S'ils sont trouvés, affichez "Oui" dans la colonne B, sinon, affichez "Non".

    Il semble que l'inclusion de texte joker dans le test logique serait une solution facile :

    =IF(A2="*a*", "Oui", "Non")

    Mais malheureusement, cela ne fonctionne pas. La formule renvoie "Non" pour toutes les cellules, même celles qui contiennent "A" :

    Pourquoi une instruction IF avec un caractère générique échoue-t-elle ? En apparence, Excel ne reconnaît pas les caractères génériques utilisés avec le signe égal ou d'autres opérateurs logiques. En examinant de plus près la liste des fonctions prenant en charge les caractères génériques, vous remarquerez que leur syntaxe suppose qu'un texte générique apparaît directement dans un argument, comme ceci :

    =COUNTIF(A2:A10, "*a*")

    Excel IF contient un texte partiel

    Maintenant que vous connaissez la raison pour laquelle une formule IF avec joker échoue, essayons de trouver comment la faire fonctionner. Pour cela, nous allons simplement intégrer une fonction qui accepte les jokers dans le test logique de IF, à savoir la fonction COUNTIF :

    IF(COUNTIF( cellule , "* texte *"), value_if_true, value_if_false)

    Avec cette approche, IF n'a aucun problème à comprendre les caractères génériques et identifie parfaitement les cellules qui contiennent soit "A" soit "a" (puisque COUNTIF n'est pas sensible à la casse) :

    =IF(COUNTIF(A2, "*a*"), "Oui", "Non")

    Cette formule va dans la cellule B2, ou toute autre cellule de la ligne 2, et vous pouvez ensuite la faire glisser vers le bas vers autant de cellules que nécessaire :

    Cette solution peut également être utilisée pour localiser chaînes de caractères d'un modèle spécifique En supposant que seuls les ID composés de 2 groupes de 2 caractères séparés par un trait d'union sont valides, vous pouvez utiliser la chaîne de caractères génériques "??- ??" pour les identifier :

    =IF(COUNTIF(A2, "??- ??"), "Valid", "")

    Comment fonctionne cette formule :

    Pour le test logique de IF, nous utilisons la fonction COUNTIF qui compte le nombre de cellules correspondant à la chaîne de caractères génériques spécifiée. Comme la plage de critères est une seule cellule (A2), le résultat est toujours 1 (la correspondance est trouvée) ou 0 (la correspondance n'est pas trouvée). Étant donné que 1 équivaut à VRAI et 0 à FAUX, la formule renvoie "Valide" (valeur_si_vrai) lorsque le compte est 1 et une chaîne vide (valeur_si_faux) lorsque le compte est 1.est égal à 0.

    Formule de recherche IF ISNUMBER pour les correspondances partielles

    Une autre façon de forcer Excel IF à fonctionner pour une correspondance partielle de texte est d'inclure la fonction FIND ou SEARCH dans le test logique. La différence est que FIND est sensible à la casse alors que SEARCH ne l'est pas.

    Ainsi, selon que vous souhaitez traiter les minuscules et les majuscules comme des caractères identiques ou différents, l'une de ces formules fonctionnera à merveille :

    Insensible à la casse formule de correspondance partielle :

    IF(ISNUMBER(SEARCH(" texte ", cellule )), value_if_true, value_if_false)

    Sensible à la casse formule de correspondance partielle :

    IF(ISNUMBER(FIND(" texte ", cellule )), value_if_true, value_if_false)

    Comme les deux fonctions sont conçues pour effectuer une correspondance de type "cellule contient", les caractères génériques ne sont pas vraiment nécessaires dans ce cas.

    Par exemple, pour détecter les ID contenant "A" ou "a", la formule est la suivante :

    =IF(ISNUMBER(SEARCH("A", A2)), "Oui", "Non")

    Pour rechercher uniquement un "A" majuscule et ignorer les "a", la formule est la suivante :

    =IF(ISNUMBER(FIND("A", A2)), "Oui", "Non")

    En B6 dans la capture d'écran ci-dessous, vous pouvez observer la différence dans le résultat :

    Comment fonctionne cette formule :

    Au cœur de la formule, il y a une combinaison de ISNUMBER et de SEARCH (ou FIND) :

    ISNUMBER(SEARCH("A", A2))

    La fonction SEARCH recherche le texte spécifié ("A" dans cet exemple) et renvoie sa position dans une chaîne de caractères en A2. Si le texte n'est pas trouvé, une erreur #VALUE est renvoyée. Comme SEARCH et FIND sont tous deux conçus pour effectuer une correspondance de type "cellule contient", les caractères génériques ne sont pas vraiment nécessaires dans ce cas.

    La fonction ISNUMBER convertit un nombre en VRAI et toute autre valeur, y compris les erreurs, en FAUX. La valeur logique va directement au test logique de IF. Dans notre cas, A2 contient "A", donc ISNUMBER renvoie VRAI :

    IF(TRUE, "Oui", "Non")

    En conséquence, IF renvoie la valeur définie pour l'élément valeur_si_vrai qui est "Oui".

    Instruction IF OR d'Excel avec caractères génériques

    Vous devez identifier les cellules qui contiennent l'une des chaînes de texte génériques ? Dans ce cas, vous pouvez combiner l'instruction IF OR classique avec la formule COUNTIF ou ISNUMBER SEARCH décrite ci-dessus.

    Par exemple, pour rechercher "aa" OU "bb" dans A2 en ignorant la casse des lettres et en renvoyant "Oui" si l'un des deux est trouvé, utilisez l'une de ces formules :

    =IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Yes", "")

    ou

    =IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Oui", "")

    L'addition de deux fonctions COUNTIF fonctionne également. Dans ce cas, le signe plus fonctionne comme l'opérateur OR :

    =IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Oui", "")

    Au lieu de coder en dur les chaînes de caractères génériques dans la formule, vous pouvez les saisir dans des cellules séparées, par exemple D2 et F2, comme le montre la capture d'écran ci-dessous. Notez que ces références de cellule sont verrouillées par le signe $ afin que la formule soit correctement copiée dans les cellules inférieures :

    =IF(OR(COUNTIF(A2, "*"&$D$2& ; "*"), COUNTIF(A2, "*"&$F$2& ; "*")), "Oui", "")

    Les formules ci-dessus fonctionnent bien pour 2 correspondances partielles, mais si vous en recherchez 3 ou plus, elles deviennent trop longues. Dans ce cas, il est logique d'aborder la tâche différemment :

    Fournissez plusieurs sous-chaînes à la fonction SEARCH dans un tableau constant, comptez les nombres retournés et vérifiez si le résultat est supérieur à zéro (ce qui signifierait qu'au moins une des sous-chaînes a été trouvée) :

    =IF(COUNT(SEARCH({"aa", "bb"}, A2))>0, "Oui", "")

    De cette façon, vous obtiendrez exactement le même résultat avec une formule plus compacte :

    Formule IF AND Excel avec caractères génériques

    Lorsque vous souhaitez vérifier si une cellule contient deux ou plusieurs sous-chaînes différentes, la méthode la plus simple consiste à utiliser la fonction COUNTIFS avec des caractères génériques pour le test logique.

    Supposons que vous vouliez localiser les cellules de la colonne A qui contiennent à la fois "b" ET "2". Pour ce faire, utilisez "*b*" et "*2*" pour les critères de COUNTIFS et A2 pour la plage de critères :

    =IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Oui", "")

    Une autre façon de procéder consiste à utiliser la formule IF AND conjointement avec ISNUMBER SEARCH :

    =IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Oui", "")

    Bien que nous n'ayons pas inclus de caractères génériques dans cette formule, elle fonctionne comme la recherche de deux chaînes génériques ("*b*" et "*2*") dans la même cellule.

    Bien entendu, rien ne vous empêche de saisir les valeurs recherchées dans des cellules prédéfinies, D2 et F2 dans notre cas, et de fournir les références des cellules à la formule :

    =IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Yes", "")

    Si vous préférez utiliser des formules plus compactes dans la mesure du possible, vous préférerez peut-être l'approche des constantes de tableau. La formule IF COUNT SEARCH ressemble beaucoup à celle de l'exemple précédent, mais comme cette fois les deux sous-chaînes doivent apparaître en A2, nous vérifions si le compte est égal à 2 :

    =IF(COUNT(SEARCH({"b", "2"}, A2))=2, "Oui", "")

    Ce sont les principales méthodes d'utilisation des caractères génériques dans l'instruction IF dans Excel. Si vous connaissez d'autres solutions, les autres utilisateurs apprécieront certainement que vous partagiez votre expérience dans les commentaires. Je vous remercie de votre lecture et j'espère vous voir sur notre blog la semaine prochaine !

    Cahier d'exercices à télécharger

    Exemples de formules de remplacement IF d'Excel (fichier .xlsx)

    Michael Brown est un passionné de technologie passionné par la simplification de processus complexes à l'aide d'outils logiciels. Avec plus d'une décennie d'expérience dans l'industrie de la technologie, il a perfectionné ses compétences dans Microsoft Excel et Outlook, ainsi que dans Google Sheets et Docs. Le blog de Michael est dédié au partage de ses connaissances et de son expertise avec les autres, en fournissant des conseils et des tutoriels faciles à suivre pour améliorer la productivité et l'efficacité. Que vous soyez un professionnel chevronné ou un débutant, le blog de Michael offre des informations précieuses et des conseils pratiques pour tirer le meilleur parti de ces outils logiciels essentiels.