3 votes

Formule Excel - interrogation d'une plage qui donne lieu à une plage.

J'ai une plage dans Excel (B3:C8) à partir de laquelle je veux filtrer les personnes anglaises. En SQL, ce serait très simple :
SELECT Persons FROM [myTable] WHERE Nationality = 'English'

Comment puis-je appliquer un filtrage similaire sur une plage où le résultat n'est pas une valeur unique mais une plage ?
Remarque : Excel dispose d'un bouton Filtre, mais il ne fait que CACHER les lignes indésirables. Je ne veux pas de lignes cachées.

Voici à quoi je veux que ma table ressemble. A quoi devrait ressembler la formule de G3 ?

enter image description here

3voto

CharlieRB Points 22232

Pour placer les noms dans une plage, vous pouvez transformer vos données en un tableau, puis créer un tableau croisé dynamique avec les éléments suivants Nationalité comme filtre de rapport et Personnes comme étiquette de ligne. Sélectionnez ensuite Anglais de la liste des nationalités. Voir la capture d'écran ci-dessous (ignorez la colonne D car elle n'a pas été utilisée) ;

Pivot Table

3voto

Melissa Points 21

Entrez-le dans G3 et faites-le glisser vers le bas. Il s'agit d'une formule de tableau, qui doit donc être saisie à l'aide de la fonction Ctrl Shft Enter

=IFERROR(INDEX($B$3:$B$8,LARGE(($C$3:$C$8=$E$3)*(ROW($B$3:$B$8)-2),COUNTIF($C$3:$C$8,$E$3)-(ROWS($3:3)-1))),"")

Note, IfError n'est disponible que dans XL 2007/10, sinon, vous devrez utiliser :

=IF(ISERROR(INDEX($B$3:$B$8,LARGE(($C$3:$C$8=$E$3)*(ROW($B$3:$B$8)-2),COUNTIF($C$3:$C$8,$E$3)-(ROWS($3:3)-1)))),"",INDEX($B$3:$B$8,LARGE(($C$3:$C$8=$E$3)*(ROW($B$3:$B$8)-2),COUNTIF($C$3:$C$8,$E$3)-(ROWS($3:3)-1))))

2voto

barry houdini Points 10704

Cette version fonctionne avec n'importe quelle version d'Excel et donne les résultats dans l'ordre indiqué.

En G3 :

=IF(ROWS(G$3:G3)>COUNTIF(C$3:C$8,E$3),"",INDEX(B$3:B$8,SMALL(IF(C$3:C$8=E$3,ROW(C$3:C$8)-ROW(C$3)+1),ROWS(G$3:G3))))

confirmé avec CTRL+SHIFT+ENTER (pressés l'un contre l'autre) et copié vers le bas aussi loin que nécessaire

0voto

N4TKD Points 981

Une solution serait d'utiliser cette instruction IF =IF($E$3=C3,B3,"") qui vous donnerait le nom de la personne si la nationalité correspond au filtre ou un blanc si ce n'est pas le cas.

0voto

soandos Points 23540

=If($E$3=English,B3,"")

Vous pouvez rendre cela plus général en faisant :

=If($E$3=C3,B3,"")

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X