web-dev-qa-db-fra.com

Vérifier si une cellule contient une sous-chaîne

Existe-t-il une fonction intégrée permettant de vérifier si une cellule contient un caractère/une sous-chaîne donné? 

Cela signifie que vous pouvez appliquer des fonctions textuelles telles que Left/Right/Mid sur une base conditionnelle sans générer d'erreurs en l'absence de caractères de délimitation.

202
geotheory

Essayez d'utiliser ceci:

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

Ceci renverra TRUE si la cellule A3 contient Some Text.

344
gwin003

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")
19
Steve

Pour ceux qui voudraient le faire en utilisant une seule fonction à l'intérieur de l'instruction IF, j'utilise

=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)

pour voir si la sous-chaîne TEXT est dans la cellule A1

[NOTE: le texte doit être entouré d'un astérisque]

11
dsm

Cette formule me semble plus intuitive:

=SUBSTITUTE(A1,"SomeText","") <> A1

cela retourne 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 trouve toujours dans l'obligation de chercher trop souvent l'aide ou d'expérimenter dans Excel avec celles-ci.

9
Warren Stevens

Découvrez la fonction FIND() dans Excel. 

Syntaxe:

FIND( substring, string, [start_position])

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

8
paras_doshi

J'aime la réponse de Rink.Attendant.6. En fait, je veux vérifier plusieurs chaînes et je 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és et je dois regrouper les constructeurs en un groupe. Pour ce faire, je cherche le mot "constructeur" ou "construction", etc. Donc - 

=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")
1
Givings

C'est une vieille question, mais une solution pour ceux qui utilisent Excel 2016 ou une version plus récente consiste à supprimer le besoin de structures imbriquées si en utilisant la nouvelle condition IFS( condition1, return1 [,condition2, return2] ...)

Je l'ai formaté pour le rendre visuellement plus clair sur la façon de l'utiliser dans 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ée d'une ISERROR(...)=FALSE pour vérifier la vérité, puis renvoyer la valeur recherchée. Ce serait formidable si SEARCH renvoie 0 au lieu d’une erreur de lisibilité, mais c’est comme cela que cela fonctionne malheureusement.

Une autre remarque importante est que IFS renverra le match trouvé en premier et que l'ordre est donc 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 car la sous-chaîne étant Surf. Les dénominateurs communs doivent donc figurer en dernier dans la liste. Ma IFS devra être commandé Surfing, Surfs, Surf pour fonctionner correctement (échanger Surfing et Surfs fonctionnerait également dans cet exemple simple), mais Surf devra être last.

0
Shawn