Excel-formel: Pakk ut flere treff i separate rader -

Sammendrag

For å trekke ut flere treff for å skille celler, i separate rader, kan du bruke en matriseformel basert på INDEKS og LITEN. I eksemplet vist er formelen i E5:

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

Dette er en matriseformel og må angis med Control + Shift + Enter.

Etter at du har angitt formelen i den første cellen, drar du den ned og over for å fylle ut de andre cellene.

Forklaring

Merk: denne formelen bruker to navngitte områder: "navn" refererer til C4: C11, og "grupper" refererer til B4: B11. Disse navnene er også definert i skjermbildet ovenfor.

Kjernen i denne formelen er dette: vi bruker SMALL-funksjonen for å få et radnummer som tilsvarer en "nth match". Når vi har radnummeret, sender vi det bare til funksjonen INDEX, som returnerer verdien på den raden.

Trikset er at SMALL jobber med en matrise som er dynamisk konstruert av IF i denne biten:

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

Denne kodebiten tester det navngitte området "grupper" for verdien i E4. Hvis den blir funnet, returnerer den et "normalisert" radnummer fra en rekke radnumre opprettet med denne delen av formelen:

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

Resultatet er en matrise som inneholder radnumre der det er samsvar, og FALSE der ikke. Matrisen ser omtrent slik ut:

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

Denne matrisen går inn i LITEN. K-verdien for SMALL (nth) kommer fra et utvidende område:

ROWS($E$5:E5)

Når du kopierer ned i resultattabellen, utvides området og får k (nth) til å øke. SMALL-funksjonen returnerer hvert matchende radnummer, som blir levert til INDEX-funksjonen som radnummer, med det navngitte området "navn" som matrise.

Håndteringsfeil

Når ROWS returnerer en verdi for k som ikke eksisterer, kaster SMALL en #NUM-feil. Dette skjer etter at alle kampene har funnet sted. For å undertrykke feilen bruker vi IFERROR for å fange feilen og returnere en tom streng ("").

Interessante artikler...