
Formule générique
=FILTER(data,(header="a")+(header="b"))
Sommaire
Pour filtrer les colonnes, fournissez un tableau horizontal pour l'argument d'inclusion. Dans l'exemple illustré, la formule en I5 est:
=FILTER(B5:G12,(B4:G4="a")+(B4:G4="c")+(B4:G4="e"))
Le résultat est un ensemble filtré de données qui contient uniquement les colonnes A, C et E des données source.
Explication
Bien que FILTER soit plus couramment utilisé pour filtrer les lignes, vous pouvez également filtrer les colonnes, l'astuce consiste à fournir un tableau avec le même nombre de colonnes que les données source. Dans cet exemple, nous construisons le tableau dont nous avons besoin avec une logique booléenne, également appelée algèbre booléenne.
En algèbre booléenne, la multiplication correspond à la logique ET et l'addition correspond à la logique OU. Dans l'exemple illustré, nous utilisons l'algèbre booléenne avec une logique OU (addition) pour cibler uniquement les colonnes A, C et E comme ceci:
(B4:G4="a")+(B4:G4="c")+(B4:G4="e")
Après que chaque expression est évaluée, nous avons trois tableaux de valeurs TRUE / FALSE:
(TRUE,FALSE,FALSE,FALSE,FALSE,FALSE)+ (FALSE,FALSE,TRUE,FALSE,FALSE,FALSE)+ (FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)
L'opération mathématique (addition) convertit les valeurs VRAI et FAUX en 1 et 0, vous pouvez donc penser à l'opération comme ceci:
(1,0,0,0,0,0)+ (0,0,1,0,0,0)+ (0,0,0,0,1,0)
En fin de compte, nous avons un seul tableau horizontal de 1 et de 0:
(1,0,1,0,1,0)
qui est livré directement à la fonction FILTER en tant qu'argument include:
=FILTER(B5:G12,(1,0,1,0,1,0))
Notez qu'il y a 6 colonnes dans les données source et 6 valeurs dans le tableau, toutes 1 ou 0. FILTER utilise ce tableau comme filtre pour inclure uniquement les colonnes 1, 3 et 5 des données source. Les colonnes 2, 4 et 6 sont supprimées. En d'autres termes, les seules colonnes qui survivent sont associées à des 1.
Avec la fonction MATCH
L'application de la logique OR avec l'ajout comme indiqué ci-dessus fonctionne bien, mais elle ne s'adapte pas bien et rend impossible l'utilisation d'une plage de valeurs d'une feuille de calcul comme critère. Comme alternative, vous pouvez utiliser la fonction MATCH avec la fonction ISNUMBER comme celle-ci pour construire l'argument include plus efficacement:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,("a","c","e"),0)))
La fonction MATCH est configurée pour rechercher tous les en-têtes de colonne dans la constante de tableau ("a", "c", "e") comme indiqué. Nous procédons de cette façon pour que le résultat de MATCH ait des dimensions compatibles avec les données source, qui contiennent 6 colonnes. Notez également que le troisième argument de MATCH est défini sur zéro pour forcer une correspondance exacte.
Après l'exécution de MATCH, il renvoie un tableau comme celui-ci:
(1,#N/A,2,#N/A,3,#N/A)
Ce tableau va directement dans ISNUMBER, qui renvoie un autre tableau:
(TRUE,FALSE,TRUE,FALSE,TRUE,FALSE)
Comme ci-dessus, ce tableau est horizontal et contient 6 valeurs séparées par des virgules. FILTER utilise le tableau pour supprimer les colonnes 2, 4 et 6.
Avec une gamme
Étant donné que les en-têtes de colonne sont déjà sur la feuille de calcul dans la plage I4: K4, la formule ci-dessus peut facilement être adaptée pour utiliser la plage directement comme ceci:
=FILTER(B5:G12,ISNUMBER(MATCH(B4:G4,I4:K4,0)))
La plage I4: K4 est évaluée comme ("a", "c", "e") et se comporte exactement comme la constante de tableau dans la formule ci-dessus.