Vérifier si une cellule contient une sous-chaîne
Existe - t-il une fonction intégrée pour vérifier si une cellule contient un caractère/sous-chaîne donné?
Cela signifierait que vous pouvez appliquer des fonctions textuelles comme Left
/Right
/Mid
sur une base conditionnelle sans lancer d'erreurs lors de la délimitation des caractères sont absents.
8 réponses
Essayez d'utiliser ceci:
=ISNUMBER(SEARCH("Some Text", A3))
Il sera de retour TRUE
, si la cellule A3
contient Some Text
.
La formule suivante détermine si le texte "CHECK" apparaît dans la cellule C10. Si ce n'est pas le cas, le résultat est vide. Si c'est le cas, le résultat est le travail "CHECK".
=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")
Pour ceux qui voudraient le faire en utilisant une seule fonction dans L'instruction IF, j'utilise
=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)
Pour voir si le texte de la sous-chaîne est dans la cellule A1
[NOTE: le texte doit avoir des astérisques autour]
Consultez la fonction FIND()
dans Excel.
Syntaxe:
FIND( substring, string, [start_position])
Retourne #VALUE!
s'il ne trouve pas la sous-chaîne.
Cette formule me semble plus intuitive:
=SUBSTITUTE(A1,"SomeText","") <> A1
Cela renvoie TRUE si "SomeText" est contenu dans A1.
Les formules IsNumber/Search et IsError/Find mentionnées dans les autres réponses fonctionnent certainement, mais je me retrouve toujours à regarder l'aide ou à expérimenter trop souvent dans Excel avec celles-ci.
J'aime la patinoire.Préposé.6 réponse. Je veux réellement vérifier plusieurs chaînes et l'ai fait de cette façon:
Tout d'abord la situation: Les Noms qui peuvent être des constructeurs de maisons ou des noms de communauté et j'ai besoin de regrouper les constructeurs en un seul groupe. Pour ce faire, je cherche le mot "constructeur" ou "construction", etc. Donc -
=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")
C'est une vieille question mais une solution pour ceux qui utilisent Excel 2016 ou plus récent est que vous pouvez supprimer le besoin de structures if imbriquées en utilisant le nouveau conditionnel IFS( condition1, return1 [,condition2, return2] ...)
.
J'ai formaté pour le rendre visuellement plus claires sur la façon de l'utiliser pour le cas de cette question:
=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1",
ISERROR(SEARCH("String2",A1))=FALSE,"Something2",
ISERROR(SEARCH("String3",A1))=FALSE,"Something3"
)
Puisque SEARCH
renvoie une erreur si une chaîne n'est pas trouvée, Je l'ai enveloppé avec un ISERROR(...)=FALSE
pour vérifier la vérité, puis retourner la valeur désirée. Ce serait génial si SEARCH
renvoyait 0 au lieu d'une erreur pour lisibilité, mais c'est juste comment cela fonctionne malheureusement.
Une autre note d'importance est que IFS
retournera la correspondance qu'il trouve en premier et donc l'ordre est important. Par exemple, si mes chaînes étaient Surf, Surfing, Surfs
comme String1,String2,String3
ci-dessus et que ma chaîne de cellules était Surfing
, elle correspondrait au premier terme au lieu du second parce que la sous-chaîne est Surf
. Ainsi, les dénominateurs communs doivent être les derniers de la liste. Mon IFS
devrait être commandé Surfing, Surfs, Surf
pour fonctionner correctement (échange Surfing
et Surfs
fonctionnerait également dans cet exemple simple), mais Surf
devrait être le dernier.
Voici la formule que j'utilise
=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )