En lisant la documentation de la =QUERY
fonction 1 , 2 , 3 , certains semblent impliquer que je devrais pouvoir utiliser les en-têtes de colonne directement dans ma requête. Par exemple, la =QUERY
fonction prend un troisième paramètre optionnel , HEADERS
qui vous permet de spécifier un certain nombre de lignes d' en- tête.
La plupart de mes requêtes seraient beaucoup plus jolies si je pouvais utiliser des en-têtes de colonne, donc je n'aurais pas à utiliser d'index de colonne, mais je ne suis pas en mesure de le faire fonctionner.
Exemple:
A B C
---------------------
Name Phone City
Vidar 12345678 Oslo
Rupert 32165487 Berlin
Je peux interroger cela en utilisant des index de colonnes:
=QUERY(Sheet1!A1:C; "select A, B, C where A = 'Vidar'"; 1)
... mais sans utiliser les en-têtes de colonne:
=QUERY(Sheet1!A1:C; "select A, B, C where Name = 'Vidar'"; 1)
... cela me donne Erreur: requête non valide: la colonne [Nom] n'existe pas dans la table
Est-il possible d'utiliser des en-têtes de colonne comme celui-ci? Sinon, quel est l'objectif du HÈADERS
paramètre?
la source
HEADERS > 0
alors le nombre donné de lignes d'en-tête sera retourné par=QUERY
en haut des résultats de la requête, non? Cela a du sens - je pensaisHEADERS
que seules les lignes spécifiées à ignorer dans la requête.OFFSET
option peut être utilisée pour ignorer les premières lignes.Oui c'est possible. Tout d'abord, vous devez utiliser MATCH pour obtenir le numéro de colonne de la colonne dont la valeur correspond à «Nom». Ensuite, vous devez utiliser ADDRESS pour obtenir la référence de cellule. Enfin, vous devez utiliser SUBSTITUTE pour supprimer le numéro de ligne de la référence de cellule.
la source
Alors qu'un ancien poste, je voulais ajouter ma solution au mix. Vous pouvez utiliser des noms de colonnes que je trouve plus utiles. De cette façon, vous n'avez pas à modifier vos appels de fonction de requête lorsque vous insérez ou supprimez des colonnes des données source.
J'ai vu d'autres utiliser la correspondance et le substitut, j'ai implémenté quelque chose d'un peu différent de simplement l'appel de la fonction de requête.
Tout d'abord - Créez une table de recherche de tous vos noms de colonne comme ceci. Ma table de recherche commence dans la colonne E d'une feuille «Config» uniquement parce que j'ai d'autres éléments sur la feuille, elle pourrait facilement être placée dans sa propre feuille.
Colonne 1 (nom de la colonne)
Colonne 2 (colonne #)
Colonne 3 (Lettre de colonne)
Je suis ouvert aux raffinements pour convertir un numéro de colonne en lettre. Cette formule est limitée en ce qu'elle ne gère que 78 colonnes. Plus que suffisant pour moi cependant.
Maintenant, votre appel de fonction Query ressemblerait à ceci:
Gardez-le bien formaté et ce n'est pas mal du tout à gérer. La seule chose que vous subirez est si vous modifiez l'index de colonne de votre plage de recherche. Mais cela ne devrait pas changer souvent, voire pas du tout, étant donné qu'il s'agit d'une plage d'assistance.
la source
Vieille question, mais je pense que cette solution en vaut la peine.
Vous pouvez utiliser une fonction de script personnalisé qui récupère l'index de colonne (c'est-à-dire A, B, C ...) en utilisant un nom d'en-tête, permettant de faire quelque chose comme:
Avec
colIndex
fonction:Ce qui peut être plus facile à utiliser et à lire.
la source
Voici ma solution:
si vous avez une colonne appelée "ville", créez une nouvelle cellule quelque part avec l'index de cette cellule:
Vous pouvez ensuite créer une plage nommée pour la cellule Z: 2 appelée: "nom", Z: 3 = "téléphone", Z: 4 = "ville"
dans votre requête, vous pouvez alors écrire:
Vous pouvez combiner cela avec la solution de correspondance d'adresses, pour ne pas avoir à suivre les colonnes réorganisées.
la source