Comment combiner deux résultats de QUERY dans Google Sheets

Lorsque vous souhaitez combiner deux résultats de QUERY dans Google Sheets, voici quelques points à prendre en compte :

Combinaison verticale ou horizontale

Vous pouvez combiner les résultats de QUERY de deux manières : verticalement (un en dessous de l’autre) ou horizontalement (côte à côte). Pour cela, vous pouvez utiliser les fonctions suivantes :

  • VSTACK pour une combinaison verticale
  • HSTACK pour une combinaison horizontale

Cependant, l’opérateur « Curly Braces » ({}) est une alternative possible. Néanmoins, il présente deux inconvénients :

  • Il peut être difficile à lire et à maintenir.
  • Selon les paramètres régionaux, il peut y avoir des confusions avec les virgules ou les barres obliques inverses.

Nous vous recommandons donc d’utiliser les fonctions VSTACK et HSTACK.

Pour une combinaison verticale, le nombre de colonnes doit correspondre dans les deux résultats de QUERY. Pour une combinaison horizontale, le nombre de lignes doit correspondre.

Gestion des erreurs possibles

Si l’une des QUERY renvoie une erreur #N/A, la combinaison de deux ou plusieurs résultats de QUERY ne fonctionnera pas correctement, car cela causerait une incompatibilité de tableau.

Les fonctions VSTACK et HSTACK peuvent renvoyer quelques erreurs #N/A en cas de déséquilibre de lignes ou de colonnes. Pour supprimer ces erreurs, vous pouvez facilement utiliser un filtre supplémentaire.

Comment combiner correctement deux résultats de QUERY dans Google Sheets

Voici quelques exemples de combinaisons verticales de deux résultats de QUERY.

Dans ces exemples, nous utiliserons deux formules QUERY et les données suivantes dans A1:C :

Aujourd’hui, nous sommes le 5 décembre 2018.

Note : Si vous utilisez ces données à une date ultérieure, elles ne fonctionneront pas correctement. Vous devrez donc modifier les dates de la colonne A pour correspondre à la date d’aujourd’hui lorsque vous utiliserez ce tutoriel. Par exemple, vous pouvez utiliser les formules suivantes :

=AUJOURDHUI()-2 // dans A2
=AUJOURDHUI() // dans A3 et A4
=AUJOURDHUI()+1 // dans A5
=AUJOURDHUI()+2 // dans A6

Voici les deux formules QUERY :

Formule 1 :
=QUERY({A2:C}, »Sélectionnez * où Col1>date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0)

Formule 2 :
=QUERY({A2:C}, »Sélectionnez * où Col1<date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0)

Sorties des formules Query 1 et 2 :

Nous pouvons combiner ces deux sorties de Query verticalement en utilisant les formules suivantes.

Combinaison verticale des résultats de Query dans Google Sheets

Commençons par l’opérateur « Curly Braces ».

Utilisation des « Curly Braces »

Vous pouvez normalement combiner les deux formules QUERY comme suit :

={QUERY({A2:C}, »Sélectionnez où Col1>date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0);QUERY({A2:C}, »Sélectionnez où Col1<date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0)}

Il vous suffit de placer un point-virgule entre les deux formules QUERY, puis d’encadrer l’ensemble de la formule avec des « Curly Braces ». Cela fonctionnera dans la plupart des cas.

Cependant, si l’une des formules renvoie une erreur #N/A (une sortie vide), la formule combinée renverra une erreur #VALUE!.

Voici une solution pour combiner correctement deux résultats de QUERY verticalement dans Google Sheets :

Tout d’abord, je vais vous montrer les modifications à apporter à chaque formule QUERY, puis nous pourrons les combiner.

Formule modifiée 1 :
SIERREUR(QUERY({A2:C}, »Sélectionnez * où Col1>date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0),A2:C2/0)

Formule modifiée 2 :
SIERREUR(QUERY({A2:C}, »Sélectionnez * où Col1<date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0),A2:C2/0)

Si une erreur #N/A se produit, les deux formules diviseront les valeurs de A2:C2 par 0. Le résultat sera le suivant :

Ceci est fait pour correspondre au nombre de colonnes total dans notre sortie. Cela rend la combinaison valide.

Cependant, dans la sortie combinée, nous devons supprimer ces codes d’erreur avec une autre fonction SIERREUR, comme suit :

=ARRAYFORMULA(SIERREUR({SIERREUR(QUERY({A2:C}, »Sélectionnez où Col1>date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0),A2:C2/0);SIERREUR(QUERY({A2:C}, »Sélectionnez où Col1<date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0),A2:C2/0)}))

Enfin, nous devons envelopper les deux formules Query combinées avec la fonction ARRAYFORMULA.

De plus, vous devrez peut-être sélectionner la colonne de dates dans le résultat et appliquer Format > Nombre > Date.

Pour supprimer les lignes vides dans le résultat, nommez la formule avec LET et appliquez un filtre. Voici un exemple :

=LET(qc,ARRAYFORMULA(SIERREUR({SIERREUR(QUERY({A2:C}, »Sélectionnez où Col1>date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0),A2:C2/0);SIERREUR(QUERY({A2:C}, »Sélectionnez où Col1<date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0),A2:C2/0)})),FILTRE(qc,CHOISIRCOLS(qc,1)<> » »))

Nous avons utilisé la fonction LET pour nommer la combinaison QUERY comme qc et filtré les lignes de qc si la première colonne de qc est vide. Nous avons utilisé la fonction FILTRE pour filtrer qc et CHOISIRCOLS pour extraire la première colonne pour le test des cellules vides.

Utilisation de VSTACK (Recommandé)

Pour combiner verticalement deux résultats de QUERY ou plus en utilisant la fonction VSTACK, vous pouvez utiliser la syntaxe suivante :

=VSTACK(query1,query2,query3,…)

Pour supprimer les erreurs que peuvent renvoyer les formules, vous pouvez envelopper la formule avec une fonction SIERREUR et utiliser un filtre supplémentaire selon la syntaxe suivante :

=LET(qc,SIERREUR(VSTACK(query1,query2,query3,…),FILTRE(qc,CHOISIRCOLS(qc,1)<> » »)))

Formule :

=LET(qc,SIERREUR(VSTACK(QUERY({A2:C}, »Sélectionnez où Col1>date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0),QUERY({A2:C}, »Sélectionnez où Col1<date ‘ »&TEXTE(AUJOURDHUI(), »yyyy-mm-dd »)& »‘ »,0})),FILTRE(qc,CHOISIRCOLS(qc,1)<> » »))

Vous devrez formater les valeurs des colonnes de dates du résultat en tant que dates en utilisant l’option Format > Nombre > Date.

Je vous suggère d’utiliser VSTACK pour combiner verticalement deux résultats de QUERY ou plus en raison des avantages suivants :

  • C’est simple et direct.
  • Il n’y a pas de problème si les colonnes ne sont pas égales. Par exemple, le résultat de la QUERY 1 peut avoir deux colonnes et le résultat de la QUERY 2 peut avoir trois colonnes. Les « Curly Braces » ne fonctionneront pas dans ce cas.

Combinaison horizontale des résultats de Query dans Google Sheets

Lorsque vous combinez horizontalement deux résultats de QUERY, une erreur peut se produire si le nombre de lignes est différent. Dans l’exemple précédent, le nombre de colonnes était différent.

Par exemple ;

Formule 1 :
=QUERY({A2:C}, »Sélectionnez * Où Col2=’Sherry' »)

Formule 2 :
=QUERY({A2:C}, »Sélectionnez * Où Col2=’Kevin' »)

Comme vous pouvez le voir dans l’exemple ci-dessus, la première formule renvoie deux lignes et la deuxième en renvoie trois.

Par conséquent, nous devons ajouter une ligne à la première formule. Cela n’est pas pratique, car le nombre de lignes peut être différent dans différentes formules.

Si le nombre de lignes est égal, vous pouvez combiner horizontalement deux résultats de QUERY comme suit :

={QUERY({A2:C}, »Sélectionnez Où Col2=’Sherry' »),QUERY({A2:C}, »Sélectionnez Où Col2=’Kevin' »)}

Il suffit de mettre une virgule entre les formules Query.

Cependant, je vous suggère d’utiliser HSTACK pour combiner horizontalement deux résultats de QUERY ou plus car il est plus fiable et plus facile à utiliser.

Syntaxe :

=SIERREUR(HSTACK(query1,query2,query3,…)))

Formule :

=SIERREUR(HSTACK(QUERY({A2:C}, »Sélectionnez Où Col2=’Sherry' »),QUERY({A2:C}, »Sélectionnez Où Col2=’Kevin' »)))

C’est aussi simple que cela ! La fonction HSTACK n’a pas de problème avec le nombre de lignes.

Voilà tout ce qu’il faut savoir sur la combinaison de deux résultats de QUERY dans Google Sheets. Si vous avez des doutes sur ce sujet, n’hésitez pas à les poser dans les commentaires. Profitez-en !


This article was originally written in English for the website Crawlan.com and was translated and adapted into French for bolamarketing.com.

Articles en lien