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.

193
demandé sur Jean-François Corbett 2013-09-04 18:55:23

8 réponses

Essayez d'utiliser ceci:

=ISNUMBER(SEARCH("Some Text", A3))

Il sera de retour TRUE, si la cellule A3 contient Some Text.

331
répondu gwin003 2016-08-30 15:36:20

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")
18
répondu Steve 2015-01-29 12:35:19

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]

11
répondu dsm 2017-12-01 23:36:59

Consultez la fonction FIND() dans Excel.

Syntaxe:

FIND( substring, string, [start_position])

Retourne #VALUE! s'il ne trouve pas la sous-chaîne.

7
répondu paras_doshi 2015-01-07 11:50:04

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.

7
répondu Warren Stevens 2016-03-07 14:39:49

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")
1
répondu Givings 2016-04-30 13:48:01

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.

0
répondu Shawn 2017-11-14 18:24:42

Voici la formule que j'utilise

=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )

-2
répondu Jim D 2015-10-15 14:38:42