
Sammendrag
For å trekke ut flere treff for å skille celler, i separate kolonner, kan du bruke en matriseformel basert på INDEKS og LITEN. I eksemplet vist er formelen i F5:
(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($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 C5: C11, og "grupper" refererer til B5: B11. Disse navnene er også definert i skjermbildet ovenfor.
Kjernen i denne formelen er dette: vi bruker SMALL-funksjonen til å generere 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=$E5,ROW(names)-MIN(ROW(names))+1)
Denne kodebiten tester det navngitte området "grupper" for verdien i E5. Hvis den blir funnet, returnerer den et radnummer fra en matrise med relative radnumre opprettet med:
ROW(names)-MIN(ROW(names))+1
Det endelige resultatet er en matrise som inneholder tall der det er samsvar, og FALSE der ikke:
(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:
COLUMNS($E$5:E5)
Når det kopieres over resultattabellen, utvides området, noe som 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 COLUMNS 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, pakker vi inn formelen i IFERROR-funksjonen for å fange feil og returnere en tom streng ("").