J'ai une formule query
qui examine une table et extrait des noms, par exemple:
A B
1 john, andrew blah
2 drew, mike blah
Je veux qu'il me montre toutes les lignes qui impliquent drew
, la formule de requête est select where A contains 'drew'
. Les deux lignes s'afficheraient, car andrew
contient drew
, mais si j'utilise la formule select where A = 'drew'
, rien ne s'affiche car il recherche une correspondance exacte. Qu'est-ce que je fais ici? Je pensais que peut-être une expression régulière aiderait, mais comment pourrais-je le faire?
Pour gérer les limites de Word, vous avez besoin de where A matches
au lieu de _where A contains
_. Il permet l’utilisation d’expressions régulières telles que _.*\bdrew\b.*
_, qui signifie
\b
_ à gauche et à droite de la chaîne (c.-à-d. que les caractères adjacents ne peuvent pas être des caractères Word).*
_La dernière puce est nécessaire car la logique de matches
requiert que tout le contenu de A corresponde à l'expression donnée (contrairement à la fonction regexmatch
qui tentera de faire correspondre les sous-chaînes).
Donc, dans votre cas, ce serait
_=query(A:B, "select * where A matches '.*\bdrew\b.*'")
_
ou, si vous souhaitez également faire correspondre "Drew" (insensible à la casse), puis
_=query(A:B, "select * where lower(A) matches '.*\bdrew\b.*'")
_