web-dev-qa-db-fra.com

Comment filtrer le tableau renvoyé par un filtre ou une autre formule?

Je veux filtrer un tableau renvoyé par un filtre pour supprimer les colonnes vides. Voici une photo d'un exemple de feuille:

enter image description here

Voici la feuille d’exemples.

Je filtre la grande table en fonction des lignes de type b. Je récupère les colonnes via la touche à gauche. Ceci est un exemple très basique de ma feuille, où il peut y avoir beaucoup de lignes de type b, mais il n'y a que deux colonnes de type b. Les en-têtes de colonne peuvent être identiques aux autres en-têtes et peuvent être modifiés en fonction de la clé.

Je comprends comment effectuer un filtre bidimensionnel en plaçant les résultats d’un filtre dans un autre. Cependant, je ne peux pas comprendre comment filtrer le résultat d'un filtre par lui-même.

Si j'ai une formule qui retourne 5 colonnes et 3 lignes. Comment puis-je dire: "Je veux filtrer toutes les colonnes qui sont vides". Cela devrait normalement être quelque chose comme Filter(A1:E5, A:E <> "")A1:E5 n'existe pas réellement dans la feuille de calcul, mais est plutôt un tableau dans une formule (Vous ne savez pas comment cela s'appelle techniquement).

J'espère que cela est mieux expliqué que ma dernière question. Si ce n'est pas le cas, merci de me le faire savoir.

1
Douglas Gaskell

Réponse courte

En supposant que chaque ensemble de colonnes identifié par son type n'aura pas de cellules vides, un double QUERY et TRANSPOSE pourraient être utilisés pour les filtrer:

=Transpose(
     QUERY(
         Transpose(
              QUERY(
                  E1:M13,
                  "Select * where M = '"&F15&"'",
                  1
              )
         ),
         "Select * Where Col2 <>''"
     )
 )

Explication

Google Sheets n'inclut pas de fonctions permettant de "filtrer les colonnes" comme l'appelait l'OP, mais il existe plusieurs façons d'atteindre le résultat souhaité. Dans cette réponse, l'une de ces manières est présentée.

De la fonction la plus profonde dans la formule à la moins profonde:

QUERY(E1:M13,"Select * where M = '"&F15&"'",1)

Renvoie toutes les colonnes où le type défini dans la colonne M correspond à la valeur définie dans la cellule F15.

Première occurrence TRANSPOSE()

Changer les colonnes en lignes.

Le résultat jusqu'à ce point sera désigné par X.

QUERY( X , "Select * Where Col2 <>''")

Filtre les colonnes d'origine et renvoie celles sans aucune valeur. Col1 correspond aux en-têtes de table, Col2 correspond à la première ligne de lignes qui correspond aux critères de filtrage de la première QUERY ().

Deuxième occurrence TRANSPOSE() Change les colonnes en lignes afin que la forme du résultat corresponde à celle des données d'origine.

Remarques

Dans Google Sheets,

  • Un array est un ensemble de valeurs à deux dimensions pouvant être désigné en les plaçant entre accolades {, }.
  • Un range est également un ensemble bidimensionnel de cellules pouvant être désignées par des références de cellules, à savoir A1, A1: E5.
  • Une result d'une fonction ou d'une formule peut être une ou plusieurs valeurs. Techniquement, on pourrait dire qu'un résultat est un tableau à deux dimensions de 1 X 1 à n X m

Références

3
Rubén