web-dev-qa-db-fra.com

Syntaxe QUERY utilisant la référence de cellule

Je ne parviens pas à trouver une instruction QUERY assez simple dans Google Spreadsheets. J'essaie d'utiliser une référence de cellule au lieu de valeurs statiques et j'ai des problèmes. Ci-dessous, le code que j'utilise, mais je reçois toujours un message "Erreur: erreur d'analyse de formule."

=QUERY(Responses!B1:I, "Select B where G contains"& $B1 &)

Je suis sûr que c'est une simple erreur, mais quelqu'un peut-il me montrer comment écrire ce qui précède pour que le QUERY extrait les données de B où G contient la valeur dans la cellule B1 (référence de cellule)?

34
Mr. B

Je n'ai qu'une solution de contournement ici. Dans ce cas particulier, j'utiliserais la fonction FILTER à la place de QUERY:

=FILTER(Responses!B:B,Responses!G:G=B1)

En supposant que vos données figurent sur la feuille "Réponses", mais que votre condition (référence de cellule) se trouve dans la cellule B1 de la feuille.

J'espère que ça aide.

MISE À JOUR:

Après quelques recherches sur la question initiale: le problème de votre formule est certainement le second & signe qui suppose que vous souhaitez concaténer quelque chose de plus avec votre instruction WHERE. Essayez de l'enlever. Si cela ne fonctionne toujours pas, essayez ceci:

=QUERY(Responses!B1:I, "Select B where G matches '^.\*($" & B1 & ").\*$'") - Je ne l'ai pas essayé, mais cela a été utile dans un autre message: Requête avec plage de valeurs pour la clause WHERE?

18
zolley

Copié à partir d'applications Web:

=QUERY(Responses!B1:I, "Select B where G contains '"&$B1&"'")
48
pnuts

Je sais que c'est un vieux fil, mais j'avais la même question que le PO et j'ai trouvé la réponse:

Vous y êtes presque. Pour insérer des références de cellules dans le langage de requête, vous devez envelopper le tout dans des marques de parole. Comme toute la requête est écrite en marques de parole, vous devrez alterner entre "et" comme indiqué ci-dessous.

Voici ce dont vous auriez besoin:

=QUERY(Responses!B1:I, "Select B where G contains '"& B1 &"' ")

Si vous voulez ensuite faire référence à plusieurs cellules, vous pouvez en ajouter d'autres comme ceci

=QUERY(Responses!B1:I, "Select B where G contains '"& B1 &"' and G contains '"& B2 &"' ")

Ce qui précède filtrerait vos résultats en fonction des contenus de B1 et B2.

6
Ben Currer

J'ai découvert que guillemets simples> guillemets doubles> enveloppés dans des esperluettes fonctionnaient. Donc, pour moi ça ressemble à ça:

=QUERY('Youth Conference Registration'!C:Y,"select C where Y = '"&A1&"'", 0)
2
cjmcqueen

aucune des réponses ci-dessus n'a fonctionné pour moi. Celui-ci a:

= QUERY (Copie! A1: AP, "sélectionnez AP, E, F, AO où AP =" & E1 & "", 1)

2
Martin

Old Thread, mais j’ai trouvé cela lors de mon voyage à la réponse ci-dessous et je pense que quelqu'un d'autre pourrait en avoir besoin aussi.

=IFERROR(ArrayFormula(query(index(Sheet3!A:C&""),"select* Where Col1="""&B1&""" ")), ARRAYFORMULA({"*     *","no cells","match"}));

Voici un texte simplement construit Filtre à partir d’un ensemble de données à 3 colonnes (A, B et C) situé dans "feuille3" dans la feuille actuelle et appelant une comparaison avec une cellule de la feuille actuelle à filtrer dans Col1(A) .

Ce bit sert uniquement à supprimer l'erreur #N/A Si le filtre ne donne aucun résultat //ARRAYFORMULA({"* *","no cells","match"}))

1
Eric Boal