Excel-formel: Uddrag flere matches i separate rækker -

Resumé

For at udtrække flere matches for at adskille celler i separate rækker kan du bruge en matrixformel baseret på INDEX og SMALL. I det viste eksempel er formlen i E5:

(=IFERROR(INDEX(names,SMALL(IF(groups=E$4,ROW(names)-MIN(ROW(names))+1),ROWS($E$5:E5))),""))

Dette er en matrixformel og skal indtastes med Control + Shift + Enter.

Når du har indtastet formlen i den første celle, skal du trække den ned og på tværs for at udfylde de andre celler.

Forklaring

Bemærk: denne formel bruger to navngivne områder: "navne" henviser til C4: C11, og "grupper" henviser til B4: B11. Disse navne er også defineret i ovenstående skærmbillede.

Kernen i denne formel er denne: vi bruger SMALL-funktionen til at få et række nummer, der svarer til et "nth match". Når vi først har række nummeret, sender vi det simpelthen til funktionen INDEX, som returnerer værdien på den række.

Tricket er, at SMALL arbejder med en matrix, der er dynamisk konstrueret af IF i denne bit:

IF(groups=E$4,ROW(names)-MIN(ROW(names))+1)

Dette uddrag tester det navngivne interval "grupper" for værdien i E4. Hvis fundet, returnerer det et "normaliseret" række nummer fra en række række numre oprettet med denne del af formlen:

ROW(names)-MIN(ROW(names))+1

Resultatet er en matrix, der indeholder rækkenumre, hvor der er et match, og FALSK, hvor ikke. Arrayet ser sådan ud:

(1; FALSK; FALSK; FALSK; FALSK; 6; FALSK)

Denne matrix går ind i SMALL. K-værdien for SMALL (nth) kommer fra et ekspanderende interval:

ROWS($E$5:E5)

Når der kopieres ned i resultattabellen, udvides intervallet, hvilket får k (nth) til at stige. SMALL-funktionen returnerer hvert matchende række nummer, som leveres til INDEX-funktionen som række_num, med det navngivne interval "navne" som array.

Håndteringsfejl

Når ROWS returnerer en værdi for k, der ikke findes, kaster SMALL en #NUM-fejl. Dette sker, når alle kampe har fundet sted. For at undertrykke fejlen bruger vi IFERROR til at fange fejlen og returnere en tom streng ("").

Interessante artikler...