
Összegzés
Ha több egyezést szeretne külön cellákba külön sorokban kivonni, használhatja az INDEX és a SMALL tömbképletet. A bemutatott példában az E5 képlete a következő:
(=IFERROR(INDEX(names,SMALL(IF(groups=E$4,ROW(names)-MIN(ROW(names))+1),ROWS($E$5:E5))),""))
Ez egy tömbképlet, amelyet a Control + Shift + Enter billentyűkombinációval kell megadni.
Miután megadta a képletet az első cellában, húzza lefelé és keresztbe a többi cellának kitöltéséhez.
Magyarázat
Megjegyzés: ez a képlet két megnevezett tartományt használ: a "nevek" a C4: C11-re, a "csoportok" pedig a B4: B11-re utal. Ezeket a neveket a fenti képernyőkép is meghatározza.
Ennek a képletnek a lényege a következő: a SMALL függvény segítségével egy sorszámot kapunk, amely megfelel az "n-edik mérkőzésnek". Miután megvan a sorszám, egyszerűen átadjuk az INDEX függvény függvénynek, amely visszaadja az adott sor értékét.
A trükk az, hogy a SMALL egy tömbmel dolgozik, amelyet az IF dinamikusan konstruál ebben a bitben:
IF(groups=E$4,ROW(names)-MIN(ROW(names))+1)
Ez a kódrészlet a nevezett tartomány "csoportokat" teszteli az E4 értékére. Ha megtalálható, akkor egy "normalizált" sorszámot ad vissza a képlet ezen részével létrehozott sorszám tömbből:
ROW(names)-MIN(ROW(names))+1
Az eredmény egy tömb, amely sorszámokat tartalmaz, ahol egyezik, és FALSE, ha nincs. A tömb így néz ki:
(1; HAMIS; HAMIS; HAMIS; HAMIS; 6; HAMIS)
Ez a tömb KIS-be megy. A kicsi (n) k értéke táguló tartományból származik:
ROWS($E$5:E5)
Az eredménytábla lefelé másolása esetén a tartomány kibővül, ami k (n-edik) növekedését okozza. A SMALL függvény minden egyes egyező sorszámot visszaad, amelyet az INDEX függvényhez sor_számként szállítunk, tömbként a megnevezett tartományt "names".
Kezelési hibák
Amikor a ROWS visszaadja a k nem létező értékét, a SMALL #NUM hibát dob. Ez akkor következik be, amikor minden mérkőzés megtörtént. A hiba elnyomására az IFERROR segítségével elkapjuk a hibát, és egy üres karakterláncot ("") adunk vissza.