Table des matières
Le didacticiel fournit un certain nombre d'exemples de formules "Excel if contains" qui montrent comment renvoyer quelque chose dans une autre colonne si une cellule cible contient une valeur requise, comment effectuer une recherche avec correspondance partielle et tester plusieurs critères avec la logique OU et ET.
L'une des tâches les plus courantes dans Excel consiste à vérifier si une cellule contient une valeur intéressante. De quel type de valeur peut-il s'agir ? N'importe quel texte ou nombre, un texte spécifique ou une valeur quelconque (pas de cellule vide).
Il existe plusieurs variantes de la formule "Si la cellule contient" dans Excel, en fonction des valeurs exactes que vous souhaitez trouver. En général, vous utiliserez la fonction IF pour effectuer un test logique et renvoyer une valeur lorsque la condition est remplie (la cellule contient) et/ou une autre valeur lorsque la condition n'est pas remplie (la cellule ne contient pas). Les exemples ci-dessous couvrent les scénarios les plus fréquents.
Si la cellule contient une valeur, alors
Pour commencer, voyons comment trouver les cellules qui contiennent n'importe quoi : du texte, un nombre ou une date. Pour cela, nous allons utiliser une simple formule IF qui vérifie les cellules non vides.
IF( cellule "", valeur_à_retourner , "")Par exemple, pour obtenir la mention "Non vide" dans la colonne B si la cellule de la colonne A, située sur la même ligne, contient une valeur quelconque, vous saisissez la formule suivante dans B2, puis vous double-cliquez sur le petit carré vert situé dans le coin inférieur droit pour copier la formule dans la colonne :
=IF(A2"", "Pas de blanc", "")
Le résultat ressemblera à ceci :
Si la cellule contient du texte, alors
Si vous voulez trouver uniquement les cellules contenant des valeurs de texte, sans tenir compte des nombres et des dates, utilisez IF en combinaison avec la fonction ISTEXT. Voici la formule générique pour renvoyer une valeur dans une autre cellule si une cellule cible contient tout texte :
IF(ISTEXT( cellule ), valeur_à_retourner , "")Supposons que vous vouliez insérer le mot "oui" dans la colonne B si une cellule de la colonne A contient du texte. Pour ce faire, mettez la formule suivante dans B2 :
=IF(ISTEXT(A2), "Oui", "")
Si la cellule contient un numéro, alors
De la même manière, vous pouvez identifier les cellules contenant des valeurs numériques (nombres et dates). Pour cela, utilisez la fonction IF avec ISNUMBER :
IF(ISNUMBER( cellule ), valeur_à_retourner , "")La formule suivante renvoie "oui" dans la colonne B si une cellule correspondante de la colonne A contient un nombre quelconque :
=IF(ISNUMBER(A2), "Oui", "")
Si la cellule contient un texte spécifique
La recherche de cellules contenant un certain texte (ou des nombres ou des dates) est facile. Vous écrivez une formule IF régulière qui vérifie si une cellule cible contient le texte souhaité, et vous tapez le texte à renvoyer dans le champ valeur_si_vrai argument.
IF( cellule =" texte ", valeur_à_retourner , "")Par exemple, pour savoir si la cellule A2 contient des "pommes", utilisez cette formule :
=IF(A2="pommes", "Oui", "")
Si la cellule ne contient pas de texte spécifique
Si vous recherchez le résultat inverse, c'est-à-dire renvoyer une valeur à une autre colonne si une cellule cible ne contient pas le texte spécifié ("pommes"), effectuez l'une des opérations suivantes.
Fournir une chaîne vide ("") dans le champ valeur_si_vrai et le texte à retourner dans l'argument valeur_si_false argument :
=IF(A2="pommes", "", "Pas des pommes")
Ou bien, mettez l'opérateur "non égal à" en Test logique et le texte à renvoyer dans valeur_si_vrai :
=IF(A2 "pommes", "Pas des pommes", "")
Dans tous les cas, la formule donnera ce résultat :
Si la cellule contient du texte : formule sensible à la casse
Pour obliger votre formule à distinguer les caractères majuscules et minuscules, utilisez la fonction EXACT qui vérifie si deux chaînes de texte sont exactement égales, y compris la casse des lettres :
=IF(EXACT(A2, "POMMES"), "Oui", "")
Vous pouvez également saisir la chaîne de texte du modèle dans une certaine cellule (disons dans C1), fixer la référence de la cellule avec le signe $ ($C$1), et comparer la cellule cible avec cette cellule :
=IF(EXACT(A2,$C$1), "Oui", "")
Si la cellule contient une chaîne de texte spécifique (correspondance partielle)
Nous en avons fini avec les tâches triviales et passons à des tâches plus difficiles et plus intéressantes :) Dans cet exemple, il faut trois fonctions différentes pour savoir si un caractère ou une sous-chaîne donnés font partie du contenu de la cellule :
IF(ISNUMBER(SEARCH(" texte" , cellule )), valeur_à_retourner ,"")En travaillant de l'intérieur vers l'extérieur, voici ce que fait la formule :
- La fonction SEARCH recherche une chaîne de texte, et si la chaîne est trouvée, elle renvoie la position du premier caractère, l'erreur #VALUE ! sinon.
- La fonction ISNUMBER vérifie si SEARCH a réussi ou échoué. Si SEARCH a retourné un nombre quelconque, ISNUMBER renvoie TRUE. Si SEARCH aboutit à une erreur, ISNUMBER renvoie FALSE.
- Enfin, la fonction IF renvoie la valeur spécifiée pour les cellules qui ont obtenu VRAI dans le test logique, une chaîne vide ("") sinon.
Et maintenant, voyons comment cette formule générique fonctionne dans des feuilles de travail réelles.
Si une cellule contient un certain texte, mettez une valeur dans une autre cellule.
Supposons que vous ayez une liste de commandes dans la colonne A et que vous vouliez trouver les commandes ayant un identifiant spécifique, disons "A-". Cette tâche peut être accomplie avec cette formule :
=IF(ISNUMBER(SEARCH("A-",A2)), "Valid","")
Au lieu de coder en dur la chaîne de caractères dans la formule, vous pouvez la saisir dans une cellule distincte (E1), puis faire référence à cette cellule dans votre formule :
=IF(ISNUMBER(SEARCH($E$1,A2)), "Valid","")
Pour que la formule fonctionne correctement, veillez à verrouiller l'adresse de la cellule contenant la chaîne de caractères avec le signe $ (référence absolue de la cellule).
Si la cellule contient un texte spécifique, copiez-le dans une autre colonne.
Si vous souhaitez copier le contenu des cellules valides à un autre endroit, il vous suffit de fournir l'adresse de la cellule évaluée (A2) dans le champ valeur_si_vrai argument :
=IF(ISNUMBER(SEARCH($E$1,A2)),A2,"")
La capture d'écran ci-dessous montre les résultats :
Si la cellule contient un texte spécifique : formule sensible à la casse
Dans les deux exemples ci-dessus, les formules ne sont pas sensibles à la casse. Dans les situations où vous travaillez avec des données sensibles à la casse, utilisez la fonction FIND au lieu de SEARCH pour distinguer la casse des caractères.
Par exemple, la formule suivante identifiera uniquement les commandes dont la majuscule "A-" ignore la minuscule "a-".
=IF(ISNUMBER(FIND("A-",A2)), "Valid","")
Si la cellule contient une des nombreuses chaînes de texte (logique OR)
Pour identifier les cellules contenant au moins un des nombreux éléments que vous recherchez, utilisez l'une des formules suivantes.
Formule de recherche IF OR ISNUMBER
L'approche la plus évidente serait de vérifier chaque sous-chaîne individuellement et de faire en sorte que la fonction OU renvoie VRAI dans le test logique de la formule IF si au moins une sous-chaîne est trouvée :
IF(OR(ISNUMBER(SEARCH(" Chaîne 1 ", cellule )), ISNUMBER(SEARCH(" chaîne2 ", cellule ))), valeur_à_retourner , "")Supposons que vous ayez une liste d'UGS dans la colonne A et que vous souhaitiez trouver celles qui comprennent soit "robe" soit "jupe". Vous pouvez le faire en utilisant cette formule :
=IF(OR(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("skirt",A2)), "Valid ",")
Cette formule fonctionne assez bien pour quelques éléments, mais ce n'est certainement pas la solution à adopter si vous souhaitez vérifier de nombreux éléments. Dans ce cas, une meilleure approche consisterait à utiliser la fonction SUMPRODUCT, comme le montre l'exemple suivant.
Formule de recherche SUMPRODUCT ISNUMBER SEARCH
Si vous avez affaire à plusieurs chaînes de texte, la recherche de chaque chaîne individuellement rendrait votre formule trop longue et difficile à lire. Une solution plus élégante consisterait à intégrer la combinaison ISNUMBER SEARCH dans la fonction SUMPRODUCT, et à voir si le résultat est supérieur à zéro :
SUMPRODUCT(--ISNUMBER(SEARCH( chaînes de caractères , cellule )))>0Par exemple, pour savoir si A2 contient l'un des mots saisis dans les cellules D2:D4, utilisez cette formule :
=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0
Vous pouvez également créer une plage nommée contenant les chaînes à rechercher, ou fournir les mots directement dans la formule :
=SUMPRODUCT(--ISNUMBER(SEARCH({"dress", "skirt", "jeans"},A2)))>0
Dans tous les cas, le résultat sera similaire à celui-ci :
Pour rendre le résultat plus convivial, vous pouvez imbriquer la formule ci-dessus dans la fonction IF et renvoyer votre propre texte à la place des valeurs TRUE/FALSE :
=IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "Valid", "")
Comment fonctionne cette formule
À la base, vous utilisez ISNUMBER avec SEARCH comme expliqué dans l'exemple précédent. Dans ce cas, les résultats de la recherche sont représentés sous la forme d'un tableau comme {TRUE;FALSE;FALSE}. Si une cellule contient au moins une des sous-chaînes spécifiées, il y aura TRUE dans le tableau. L'opérateur double unaire (--) convertit les valeurs TRUE / FALSE en 1 et 0, respectivement, et donne un tableau comme{Enfin, la fonction SUMPRODUCT additionne les chiffres, et nous sélectionnons les cellules dont le résultat est supérieur à zéro.
Si la cellule contient plusieurs chaînes de caractères (logique ET)
Dans les situations où vous souhaitez trouver des cellules contenant toutes les chaînes de texte spécifiées, utilisez la combinaison déjà familière ISNUMBER SEARCH avec IF AND :
SI(AND(ISNUMBER(SEARCH(" Chaîne 1 ", cellule )), ISNUMBER(SEARCH(" chaîne2 ", cellule ))), valeur_à_retourner ,"")Par exemple, vous pouvez trouver les UGS contenant à la fois "robe" et "bleu" avec cette formule :
=IF(AND(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("blue",A2)), "Valid ",")
Vous pouvez également saisir les chaînes de caractères dans des cellules distinctes et faire référence à ces cellules dans votre formule :
=IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2)), "Valid ",")
Comme solution alternative, vous pouvez compter les occurrences de chaque chaîne et vérifier si chaque compte est supérieur à zéro :
=IF(AND(COUNTIF(A2, "*dress*")>0,COUNTIF(A2, "*blue*")>0), "Valid","")
Le résultat sera exactement comme indiqué dans la capture d'écran ci-dessus.
Comment renvoyer des résultats différents en fonction de la valeur de la cellule
Si vous souhaitez comparer chaque cellule de la colonne cible à une autre liste d'éléments et renvoyer une valeur différente pour chaque correspondance, utilisez l'une des approches suivantes.
IFs imbriqués
La logique de la formule IF imbriquée est aussi simple que cela : vous utilisez une fonction IF distincte pour tester chaque condition, et renvoyer des valeurs différentes en fonction des résultats de ces tests.
IF( cellule =" lookup_text1 ", " retourner _ texte1 ", IF( cellule =" lookup_text2 ", " retourner _ texte2 ", IF( cellule =" lookup_text3 ", " retourner _ texte3 ", "")))Supposons que vous ayez une liste d'articles dans la colonne A et que vous souhaitiez que leurs abréviations figurent dans la colonne B. Pour ce faire, utilisez la formule suivante :
=IF(A2="pomme", "Ap", IF(A2="avocat", "Av", IF(A2="banane", "B", IF(A2="citron", "L", ""))))
Pour plus de détails sur la syntaxe et la logique des IF imbriqués, veuillez consulter Excel nested IF - plusieurs conditions dans une seule formule.
Formule de recherche
Si vous recherchez une formule plus compacte et mieux compréhensible, utilisez la fonction LOOKUP avec les valeurs de recherche et de retour fournies sous forme de constantes de tableau vertical :
LOOKUP( cellule , {" lookup_text1 " ;" lookup_text2 " ;" lookup_text3 " ;...}, {" retourner _ texte1 " ;" retourner _ texte2 " ;" retourner _ texte3 " ;...})Pour obtenir des résultats précis, assurez-vous de répertorier les valeurs de la recherche dans ordre alphabétique de A à Z.
=LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})
Par rapport aux IF imbriqués, la formule Lookup présente un avantage supplémentaire : elle comprend l'élément caractères de remplacement et peut donc identifier des correspondances partielles.
Par exemple, si la colonne A contient quelques sortes de bananes, vous pouvez rechercher "*banane*" et obtenir la même abréviation ("B") pour toutes ces cellules :
=LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})
Pour plus d'informations, veuillez consulter la rubrique Formule de recherche comme alternative aux IF imbriqués.
Formule Vlookup
Lorsque vous travaillez avec un ensemble de données variables, il peut être plus pratique de saisir une liste de correspondances dans des cellules séparées et de les récupérer en utilisant une formule Vlookup, par exemple :
=VLOOKUP(A2, $D$2:$E$5, 2,FALSE )
Pour plus d'informations, veuillez consulter le tutoriel Excel VLOOKUP pour les débutants.
C'est ainsi que vous vérifiez si une cellule contient une valeur ou un texte spécifique dans Excel. La semaine prochaine, nous continuerons à étudier les formules Excel Si la cellule contient et apprendrons à compter ou à additionner les cellules concernées, à copier ou à supprimer des lignes entières contenant ces cellules, et bien plus encore. Restez à l'écoute !
Cahier d'exercices
Excel If Cell Contains - exemples de formules (fichier .xlsx)