Google Sheets QUERY: Sélectionnez des colonnes différentes chaque jour

Google Sheets QUERY est un outil puissant qui permet de sélectionner différentes colonnes chaque jour en utilisant la fonction TODAY. Cette fonctionnalité peut être utile de deux manières :

Sélectionnez une colonne différente chaque jour dans la clause SELECT

Il est possible de sélectionner la colonne 5 aujourd’hui, la colonne 6 demain, et ainsi de suite, en utilisant l’astuce de colonne dynamique dans la clause SELECT (ces numéros de colonne sont uniquement à titre d’illustration).

Sélectionnez la colonne 1 en fonction des critères appliqués dans la colonne 5 aujourd’hui, la colonne 6 demain, et ainsi de suite, en utilisant l’astuce de colonne dynamique dans la clause WHERE (ces numéros de colonne sont uniquement à titre d’illustration).

Une fois que vous avez appris cette technique, vous pouvez l’utiliser pour sélectionner différentes colonnes chaque jour à la fois dans les clauses SELECT et WHERE de QUERY.

Cette astuce de colonne dynamique dans Google Sheets QUERY sera utile lorsque vous ajouterez de nouvelles colonnes à votre tableau avec des données fraîches. L’astuce de colonne dynamique mentionnée ci-dessus vous permettra de visualiser seulement les dernières données sans avoir à modifier la formule chaque jour.

Comment sélectionner des colonnes différentes chaque jour dans la clause SELECT de QUERY dans Google Sheets

Supposons que vous ayez une flotte de camions de capacité de chargement de 40 tonnes. Vous tenez un Google Sheet avec les détails des trajets par jour, où la colonne A contient les numéros de véhicule et les colonnes suivantes contiennent les données de chaque jour. Le nom de l’onglet de la feuille contenant les données est « Liste des trajets ».

Supposons que vous ayez les données actuelles dans la sixième colonne (Trajet n°5). La formule QUERY suivante renverra les données de cette colonne :

=QUERY({'Liste des trajets'!A1:DF1000}, "select Col6 where Col1 is not null", 1)

Où :

  • {'Liste des trajets'!A1:DF1000} est la plage de données QUERY.
  • "select Col6 where Col1 is not null" est la requête.
  • 1 est l’en-tête.

Le lendemain, vous voulez les données de la 7ème colonne du tableau. Vous devriez alors modifier la formule comme suit, n’est-ce pas ?

=QUERY({'Liste des trajets'!A1:DF1000}, "select Col7 where Col1 is not null", 1)

Voici comment sélectionner dynamiquement des colonnes différentes chaque jour dans la fonction QUERY.

Remplacez Col6 par Col"&MIN(TODAY()-45197+6,100)&"

Donc, la formule deviendra :

=QUERY({'Liste des trajets'!A1:DF1000}, "select Col"&MIN(TODAY()-45197+6,100)&" where Col1 is not null", 1)

Mais cela ne fonctionnera pas dans votre cas à moins que vous ne fassiez les modifications suivantes :

  • Remplacez la plage de données {'Liste des trajets'!A1:DF1000} par votre plage de données.
  • Changez le numéro de colonne 6 par le numéro avec lequel vous souhaitez commencer.
  • Changez 100 par la dernière colonne. Vous pouvez augmenter ou diminuer ce nombre en fonction du nombre maximum de colonnes que vous attendez dans votre tableau.
  • Remplacez le nombre 45197 par le nombre que vous obtenez lorsque vous entrez =DATEVALUE(TODAY()) dans votre feuille.

Comment sélectionner des colonnes différentes chaque jour dans la clause WHERE de QUERY dans Google Sheets

C’est un scénario totalement différent. Supposons que vous souhaitiez filtrer les numéros de véhicule utilisés dans le transport.

La formule suivante renverra les véhicules de la première colonne si la sixième colonne contient des données :

=QUERY({'Liste des trajets'!A1:DF1000}, "select Col1 where Col6 is not null", 1)

Comment sélectionner la 7ème colonne le lendemain ?

Tout comme dans la clause SELECT, vous pouvez sélectionner dynamiquement des colonnes différentes chaque jour dans la clause WHERE de QUERY également.

Pour ce faire, remplacez Col6 dans la clause WHERE par le code suivant :

Col"&MIN(TODAY()-45197+6,100)&"

Cela garantira que la formule sélectionne toujours la colonne qui contient les données pour le jour actuel.

La formule QUERY mise à jour sera donc :

=QUERY({'Liste des trajets'!A1:DF1000},"select Col1 where Col"&MIN(TODAY()-45197+6,100)&" is not null",1)

Logique de la formule

La fonction TODAY est la clé pour sélectionner des colonnes différentes chaque jour dans QUERY dans Google Sheets.

Il s’agit d’une fonction volatile, similaire à NOW, RANDARRAY, RAND, et RANDBETWEEN. Cela signifie que la fonction DATE se recalcule chaque fois que la feuille de calcul est modifiée.

Dans notre formule, 45197 est la valeur de date de la date du jour. Vous pouvez obtenir cette valeur en entrant =DATEVALUE(TODAY()) dans une cellule vide.

En soustrayant la date du jour à elle-même, le résultat est toujours 0 (zéro). Ensuite, nous ajoutons le numéro de colonne que nous voulons sélectionner, qui est 6 dans notre exemple.

Le lendemain, la fonction TODAY se mettra à jour et TODAY()-45197 sera égal à 1. C’est la logique derrière le fonctionnement de la sélection dynamique de colonnes.

Nous avons également utilisé la fonction MIN pour arrêter la formule à la 100ème colonne. Cela fonctionne comme suit :

MIN(numéro_de_colonne, 100)

Cette fonction renvoie la plus petite des deux valeurs : le numéro de colonne ou 100. Cela garantit que la formule ne sélectionnera jamais une colonne qui dépasse la 100ème colonne.

Articles en lien