Google Sheets : la fonction QUERY !
Basée sur le langage SQL, QUERY va permettre de multiplier les conditions à appliquer à la requête, tout en mixant exclusions ou/et inclusions de données.
Ce que vous allez découvrir
- La syntaxe de cette formule QUERY :
Google Sheets : la fonction QUERY !
La fonction QUERY de Google Sheets exécute sur toutes les données une requête écrite dans le langage de requête de l’API Google Visualization.
Dans l’animation ci-dessous, on souhaite pouvoir afficher, pour quelques clients choisis, quelques références à choisir dans une liste.
Classiquement, la cellule contenant la fonction QUERY comporte la plage à requêter ainsi que les filtres et se présente comme suit :
=QUERY(A7:D20; »select * « )
Afin de rendre la requête plus interactive, il est possible de décomposer la fonction sur plusieurs cellules, ce qui donnera :
=QUERY(A7:D10;A1)
Dans la cellule A1, on pourra alors écrire le texte de la requête et y insérer des références à des listes de choix, comme le montre l’animation ci-dessous.
Lien vers le centre aide Google Sheets.
Lien vers le fichier exemple : https://goo.gl/mleaBq
Cet article est inspiré d’un post G+ de Thierry RANNOU.
La syntaxe de cette formule QUERY :
QUERY(données, requête, en-têtes)
données : plage de cellules sur laquelle effectuer la requête.
Chaque colonne de données ne peut contenir que des valeurs booléennes, des valeurs numériques (y compris différents types de date et heure) ou des valeurs de chaîne.
En cas de types de données mixtes dans une seule colonne, le type de données majoritaire détermine le type de données de la colonne, à prendre en compte pour les requêtes. Les types de données minoritaires sont considé
Veuillez créer un compte pour lire la suite de cette ressource
L’accès à cette ressource se fait gratuitement en créant un compte Numerifan. Les abonnements payants donnent également accès aux cours gratuits.
Cet article est réservé aux abonnés. Pourquoi ?
Fournir tout ce contenu nous demande beaucoup de temps, des ressources et une veille permanente. Accédez à ce contenu en rejoignant notre super communauté, pour tous nous remercier 💪
Besoin d'un peu plus d'aide sur Sheets ?
Des formateurs sont disponibles toute l'année pour vous accompagner et optimiser votre utilisation de Sheets, que ce soit pour votre entreprise ou pour vos besoins personnels !
Découvrir nos formations Sheets
- Articles connexes
- Plus de l'auteur
5
Note du cours
(2)
(0)
(0)
(0)
(0)
Merci à vous, blog très utile!
Bonjour,
J’ai un problème avec cette fonction QUERY : TOUTES LES VALEURS ne sont pas afficher ! ! !
J’ai trouvé le problème. Dans la doc de QUERY voici ce qui est dit :
« En cas de types de données mixtes dans une seule colonne, le type de données majoritaire
détermine le type de données de la colonne, à prendre en compte pour les requêtes. Les types
de données minoritaires sont considérés comme des valeurs nulles. »
Du coup, si j’ai dans 1 colonne : 50 lignes contenant des chiffres, et 10 lignes des caractères, alors les 10 lignes avec les caractères ne sont pas affiché ! Moi, je voudrais qu’il affiche toutes les lignes (au format TEXTE par exemple).
J’ai essayé de définir la colonne au format « TEXTE BRUT », mais ça ne change rien.
Aurais-tu une solution ?
Merci d’avance,
Svp est ce que vous avez la solution de ce probleme … je l’ai toujours
Merci
@حسن الحسن تمياس Hassane
une solution
=QUERY(ARRAYFORMULA(TO_TEXT(A:C)); »select * where (Col3 = ‘ »&M1& »‘) »; 1)
en M1 la recherche soit en Texte soit en Nombre
Salutations
Gilbert
Merci bcp Gilbert
malheureusement je n’ai pas compris M1 . est ce que je dois l’ecrire dans la fonction
@حسن الحسن تمياس Hassane
M1 c’est la cellule où se trouve le texte ou le nombre rechercher
attention les guillemets sur le Blog ne sont pas bien convertis c’est le problème ici
Si besoin je mettrait un exemple à télécharger
Merci bcp M Gilbert
ça marche à merveille …
mais pour mon cas je travaille sur un tableau et le problème se pose uniquement pour deux colonne
quand j’applique votre solution la tableau obtenu est considéré comme texte complétement, ce que je veux pas …
Merci encore une autre fois
@حسن الحسن تمياس Hassane
employer la fonction CNUM() pour convertir le résultat TEXTE en NUMÉRIQUE dans le tableau pour effectuer des calculs par exemple
Salutations
Gilbert
Merci monsieur votre aide m’ai précieuse ,
j’ai cherché pendant un certain temps comment faire appel à select sur une cellule et non du texte figé, trop bien
Bonjour,
J’utilise la fonction QUERY afin de faire remonter des informations de plusieurs classeurs. Cela marche à merveille pour 90% de mes données. Mais de façon très bizarre, il arrive que des données, pourtant bien issues de lignes différentes sur le fichier source, soient « compactées » dans une seule cellule dans le fichier cible. Pouvez-vous m’éclairer sur cette étrangeté ? Je vous en remercie par avance.
J’ai un problème. Le nombre de données dans chaque formule diffère par le nombre de ligne d’information. Considérant la formule ci-joint
={SIERREUR(query(BC14:BL;« SELECT BD WHERE BE is not null Order by « &$BC1& » Asc « ));SIERREUR(query(BN14:BW;« SELECT BO WHERE BP is not null Order by « &$BN1& » Asc « ));SIERREUR(query(CJ14:CS;« SELECT CK WHERE CL is not null Order by « &$CJ1& » Asc « ));SIERREUR(query(CU14:DD;« SELECT CV WHERE CW is not null Order by « &$CU1& » Asc « ));SIERREUR(query(DF14:DO;« SELECT DG WHERE DH is not null Order by « &$DF1& » Asc « ))}
Mon problème le nombre de ligne minoritaire est considéré comme nul. Que faire ?
Étant donné que les lignes diffèrent d’une formule à l’autre, la fonction n’affiche pas toutes les valeurs. Le nombre de ligne majoritaire sont affichées alors que les minoritaires sont considérées comme nulles. Voici ma formule type :
={SIERREUR(query(BC14:BL; »SELECT BD WHERE BE is not null Order by « &$BC1& » Asc « ));SIERREUR(query(BN14:BW; »SELECT BO WHERE BP is not null Order by « &$BN1& » Asc « ));SIERREUR(query(CJ14:CS; »SELECT CK WHERE CL is not null Order by « &$CJ1& » Asc « ));SIERREUR(query(CU14:DD; »SELECT CV WHERE CW is not null Order by « &$CU1& » Asc « ));SIERREUR(query(DF14:DO; »SELECT DG WHERE DH is not null Order by « &$DF1& » Asc « ))}