J'utilise une formule pour parcourir une liste de noms, les comparer à une liste principale et vérifier les valeurs associées pour les noms qui apparaissent sur les deux.
=COUNTA( Iferror(QUERY(Requirements!A2:F, "select A where A matches '" & JOIN("|", Attendance!A2:A) & "' and B = 'Yes'", 0),))
Cependant, certains noms contiennent des apostrophes (par exemple, O'Malley
), ce qui tue la formule - Existe-t-il un moyen simple d'échapper ou de remplacer l'apostrophe dans le nom, que ce soit dans les listes d'origine ou lors de la lecture de la formule?
Selon référence du langage de requête de Google , les littéraux de chaîne doivent être
entre guillemets simples ou doubles. Exemples: "quatorze", "bonjour le monde" "Il pleut".
Vous vous associez aux valeurs de présence uniquement par |
, qui est à nouveau enfermé dans '
s, donc si Attendance!A2:A
était
Larsson
O'Malley
Taylor
le résultat de la "... '" & JOIN("|", Attendance!A2:A) & "' ..."
serait 'Larsson|O'Malley|Taylor'
.
Comme vous pouvez le voir, cela conduit à un '
sans correspondance - la chaîne se termine apparemment et commence par un '
, mais l'apostrophe dans O'Malley
raccourcit la chaîne de sorte qu'elle soit vraiment 'Larsson|O'
.
Vous pouvez utiliser ""
au lieu de '
lors de la création de la chaîne:
=COUNTA( Iferror(QUERY(Requirements!A2:F, "select A where A matches """ & JOIN("|", Attendance!A2:A) & """ and B = 'Yes'", 0)))
Notez comment guillemet double ""
permet au caractère d'être échappé , afin de ne pas court-circuiter la chaîne.
Cela permettrait de compter O'Malley
, mais poserait des problèmes si vous avez un nom qui inclut "
. Pour éviter toutes sortes de problèmes de caractère, votre formule doit être réécrite afin d'éviter de créer une requête en concaténant des chaînes d'entrée.