Je cherche à utiliser Excel pour rechercher et retourner plusieurs valeurs de référence pour une clé donnée. VLookup fait quelque chose de très similaire à ce dont j'ai besoin - mais ne renvoie qu'une seule correspondance.
Je suppose que cela impliquera des méthodes de retour et de gestion de tableaux, bien que je ne les ai pas traités auparavant. Certains googleurs commencent à s'appuyer sur l'if ([lookuparray] = [valeur], ligne [lookuparray]) dans le cadre d'une solution - bien que je ne puisse pas obtenir qu'il renvoie une seule correspondance ...
Par exemple, si j'ai ces données de référence:
Adam Red
Adam Green
Adam Blue
Bob Red
Bob Yellow
Bob Green
Carl Red
J'essaie d'obtenir les multiples valeurs de retour sur la droite. (Séparé par des virgules, si possible)
Red Adam, Bob, Carl
Green Adam, Bob
Blue Adam
Yellow Bob
(J'ai déjà la valeur clé sur la gauche - pas besoin de retirer ces valeurs)
Toute aide sur la façon d'aborder la gestion de plusieurs valeurs dans ce contexte est appréciée. Merci.
la source
=SUM(IF($B$2:$B$8="Key", $C$2:$C$8, 0))
Échangez les colonnes afin que les couleurs soient dans la colonne A et les noms dans la colonne B, puis triez la couleur.
Formule en C2 (copiez-la dans la colonne): = IF (A2 <> A1, B2, C1 & "," & B2)
Formule en D2 (copiez-la dans la colonne): = A2 <> A3
Filtrez «VRAI» dans la colonne D pour obtenir les résultats souhaités. Voir ci-dessous:
la source
Si vous voulez une approche par formule, il est beaucoup plus simple d'obtenir les résultats dans des cellules distinctes, supposons donc que votre premier tableau est A2: B8 et que les couleurs sont à nouveau répertoriées dans D2: D5. Essayez cette formule en E2
=IFERROR(INDEX($A$2:$A$8,SMALL(IF($B$2:$B$8=$D2,ROW($B$2:$B$8)-ROW($B$2)+1),COLUMNS($E2:E2))),"")
confirmé avec
CTRL+SHIFT+ENTER
et copié de part et d'autre. Lorsque les matchs sont épuisés, vous obtenez des blancs.La formule suppose qu'Excel 2007 ou version ultérieure - si la version antérieure vous pouvez utiliser COUNTIF au lieu de IFERROR, c.-à-d.
=IF(COLUMNS($E2:E2)>COUNTIF($B$2:$B$8,$D2),"",INDEX($A$2:$A$8,SMALL(IF($B$2:$B$8=$D2,ROW($B$2:$B$8)-ROW($B$2)+1),COLUMNS($E2:E2))))
la source
Voici la solution VBA pour vous. Tout d'abord, voici à quoi ressemblent les résultats:
Et voici le code:
la source