
Povzetek
Če želite v ločenih celicah izločiti več zadetkov v ločenih celicah, lahko uporabite matrično formulo, ki temelji na INDEX in SMALL. V prikazanem primeru je formula v E5:
(=IFERROR(INDEX(names,SMALL(IF(groups=E$4,ROW(names)-MIN(ROW(names))+1),ROWS($E$5:E5))),""))
To je formula matrike in jo je treba vnesti s tipkama Control + Shift + Enter.
Ko vnesete formulo v prvo celico, jo povlecite navzdol in navzgor, da zapolnite druge celice.
Pojasnilo
Opomba: ta formula uporablja dva imenovana obsega: "imena" se nanaša na C4: C11 in "skupine" se nanaša na B4: B11. Ta imena so opredeljena tudi na zgornjem posnetku zaslona.
Bistvo te formule je naslednje: s funkcijo SMALL dobimo številko vrstice, ki ustreza "n-ti ujemanju". Ko dobimo številko vrstice, jo preprosto prenesemo v funkcijo funkcije INDEX, ki vrne vrednost v tej vrstici.
Trik je v tem, da SMALL deluje z matriko, ki jo v tem bitu dinamično zgradi IF:
IF(groups=E$4,ROW(names)-MIN(ROW(names))+1)
Ta delček preizkuša imenovane "skupine" obsega za vrednost v E4. Če ga najdemo, vrne "normalizirano" številko vrstice iz niza številk vrstic, ustvarjenega s tem delom formule:
ROW(names)-MIN(ROW(names))+1
Rezultat je matrika, ki vsebuje številke vrstic, kjer obstaja ujemanje, in FALSE, kjer ne. Matrika je videti nekako takole:
(1; FALSE; FALSE; FALSE; FALSE; 6; FALSE)
Ta matrika gre v SMALL. Vrednost k za SMALL (nth) prihaja iz naraščajočega obsega:
ROWS($E$5:E5)
Ob kopiranju navzdol po tabeli rezultatov se obseg razširi, zaradi česar se k (nth) poveča. Funkcija SMALL vrne vsako ujemajočo se številko vrstice, ki je funkcija INDEX podana kot številka_vrstice, z matriko imenovanega obsega.
Napake pri ravnanju
Ko ROWS vrne vrednost za k, ki ne obstaja, SMALL vrne napako #NUM. To se zgodi po vseh tekmah. Za zatiranje napake z IFERROR lovimo napako in vrnemo prazen niz ("").