Formule Google Sheets pour "si contient"

40

J'essaie de comprendre comment identifier IFune liste d'éléments dans une cellule contenant une valeur ou une chaîne.

EXEMPLE

La cellule A1 contient sites, sheets, docs, slides.

Je veux que la cellule B1 affiche un 1 si la cellule A1 contient la chaîne sites.

FORMULE

=if(A1 ?????? "sites", 1,0)

Je ne sais pas quoi remplacer ??????par la formule ci-dessus OU si cette formule est possible. Toutes les idées sur la façon d'atteindre le résultat souhaité sont grandement appréciées.

Monsieur B
la source

Réponses:

55

Vous pouvez utiliser REGEXMATCH:

=IF(REGEXMATCH(A1, "sites"), 1, 0)

Pour expliquer, REGEXMATCH renvoie true si et seulement si l'argument est une sous-chaîne de votre chaîne.

Aurielle Perlmann
la source
10
L' utilisation regexmatchserait plus simple: if(regexmatch(A1, "sites"), 1, 0).
1
Le "si" n'est pas nécessaire car regexmatch renvoie déjà un booléen, donc "REGEXMATCH (A1," sites ")"
David
2
Le si est là pour qu'ils puissent convertir le vrai en 1 ou 0 si faux
Aurielle Perlmann
7

=if(search("sites",B2)>0,1,0)

=if(IFERROR(search("sites",B2)>0,0),1,0)

Les deux fonctionnent. La seconde écrit un 0 s'il y a une erreur.

Tom Woodward
la source
2
La première formule ne renverra jamais 0 car SEARCH(search_for, text_to_search, [starting_at])renverra une erreur si search_forintrouvable.
Rubén
1

Vous le faites probablement parce que vous voulez connaître le nombre ou le nombre moyen de lignes contenant le mot "sites". En supposant que vous ayez 100 lignes d'entrées dans la colonne A, vous pouvez utiliser cette fonction pour savoir combien de lignes contiennent le mot "sites":

=QUERY(A1:A100, "select count(A) where A like '%sites%'")

Cela est beaucoup plus rapide que de créer une colonne de 1 et de zéros, puis d’exploiter cette nouvelle colonne.

Ryan Shillington
la source
Cela peut-il fonctionner sur une boîte au lieu d’une colonne?
Adam Starrh
Ouaip. au lieu de A1:A100vous pouvez le faire A1:C100et ensuite écrire une requête avec les colonnes A, B et C.
Ryan Shillington
1

Une solution sans REGEX:

=if(iserror(FIND("sites",B2)),0,1)

la capitalisation compte et la iflogique doit être inversée, étant donné que la réponse est truelorsque la chaîne n'est pas trouvée.

Adrià
la source
C'est fondamentalement la même chose que cette réponse , mais en introduisant la chose sensible à la casse. En passant, les exemples de données fournis par l'OP n'incluent sheetspas Sheets.
Rubén
0

=IF(QUERY(A1, "where A contains 'sites'")<>"", 1, )

0

utilisateur0
la source
0

Comme le suggère Ryan Shillington, vous souhaitez connaître le nombre de cellules dans une plage comportant des "sites", vous pouvez essayer:

=COUNTIF(A1:A100;"*sites*") 

Le * agit comme une notion générique, de sorte qu'il recherchera une correspondance n'importe où dans la cellule, pas seulement une correspondance exacte pour la cellule entière.

Je l'ai également fait avec une référence de cellule au lieu de " sites ", mais vous devez ensuite ajouter des astérisques génériques au texte de la cellule.

Heidi
la source
0

Si vous choisissez l'option astérisque et souhaitez une référence de cellule, vous pouvez utiliser la fonction CONCATENATE pour ajouter les astérisques.

=COUNTIF(A1:A100,CONCATENATE("*",A1,"*"))

arh
la source