Nous avons une liste de commandes avec des numéros et des noms de marchandises. Je voudrais, par exemple, retirer du tableau par numéro de commande toutes les marchandises qui y sont incluses. Plus ou moins comme ça :
Fonction merveilleuse RECHERCHEV (RECHERCHEV) dans une telle situation, cela n'aidera que partiellement, car il est capable d'extraire des données uniquement par la première correspondance trouvée, c'est-à-dire ne nous donnera que Pommes. Pour trouver et extraire tous les éléments du tableau, il est préférable d'utiliser une formule matricielle. Comme celui-ci:
=INDEX(G$$2:$G$16;MOINS(IF($ E $ 2=A2: A16;LINE(B2 : B16)-1;"");LINE()-5))
Il doit être saisi comme suit :
- sélectionnez les cellules où les résultats doivent être affichés (dans notre exemple, il s'agit de la plage D6:D20)
- entrer (copier la formule dans la première cellule) de la plage
- Press Ctrl + Shift + Entrer
Soustraction d'unité dans le fragment CHAINE(B2:B16)-1 est fait à cause de l'en-tête du tableau. Pour la même raison, pour compenser le décalage de la plage résultante par rapport à celle d'origine, le nombre cinq dans le fragment est soustrait CHAÎNE()-5
Pour masquer le #NUM ! erreur qui apparaîtra dans les cellules vides dans la plage résultante D6:D20, vous pouvez utiliser les fonctions de vérification d'erreur IF et EOSH, en remplaçant notre formule par une formule légèrement plus complexe :
=SI(EOSH(ИНДЕКС($B$2:$B$16;НАИМЕНЬШИЙ(ЕСЛИ($E$2=A2:A16;СТРОКА(B2:B16)-1;»»);СТРОКА()-5)));»»;ИНДЕКС($B$2:$B$16;НАИМЕНЬШИЙ(ЕСЛИ($E$2=A2:A16;СТРОКА(B2:B16)-1;»»);СТРОКА()-5)))
Dans Excel 2007, une fonction SIERREUR plus pratique est apparue - elle vous permet de résoudre le problème de manière plus compacte :
=SIERREUR(ИНДЕКС($B$2:$B$16;НАИМЕНЬШИЙ(ЕСЛИ($E$2=A2:A16;СТРОКА(B2:B16)-1;»»);СТРОКА()-5));»»)
PS
Dans la version anglaise d'Excel, ces fonctions ressembleront à ceci :
=INDEX($B$2:$B$16,SMALL(IF($E$2=A2:A16,ROW(B2:B16)-1,»»),ROW()-5))
=IF(ISERR(INDEX($B$2:$B$16,SMALL(IF($E$2=A2:A16,ROW(B2:B16)-1,»»),ROW()-5))),»»,INDEX($B$2:$B$16,SMALL(IF($E$2=A2:A16,ROW(B2:B16)-1,»»),ROW()-5)))
=IFERROR(INDEX($B$2:$B$16,SMALL(IF($E$2=A2:A16,ROW(B2:B16)-1,»»),ROW()-5)),»»)
- Utilisation de la fonction VLOOKUP pour rechercher des données dans une table
- Une version améliorée de la fonction VLOOKUP2 qui peut rechercher dans n'importe quelle colonne et pas seulement la première valeur
- Fonctions VLOOKUP2 et VLOOKUP3 du module complémentaire PLEX
- Que sont les formules matricielles et à quoi servent-elles ?