
souhrn
Chcete-li extrahovat více shod do samostatných buněk, můžete v samostatných řádcích použít maticový vzorec založený na INDEXU a MALÉM. V zobrazeném příkladu je vzorec v E5:
(=IFERROR(INDEX(names,SMALL(IF(groups=E$4,ROW(names)-MIN(ROW(names))+1),ROWS($E$5:E5))),""))
Toto je vzorec pole a musí být zadán pomocí kláves Control + Shift + Enter.
Poté, co zadáte vzorec do první buňky, přetáhněte jej dolů a napříč a vyplňte ostatní buňky.
Vysvětlení
Poznámka: tento vzorec používá dva pojmenované rozsahy: „names“ odkazuje na C4: C11 a „groups“ označuje B4: B11. Tyto názvy jsou také definovány na snímku obrazovky výše.
Podstata tohoto vzorce je tato: používáme funkci MALÉ k získání čísla řádku, které odpovídá „n-té shodě“. Jakmile máme číslo řádku, jednoduše ho předáme do funkce funkce INDEX, která vrací hodnotu v daném řádku.
Trik spočívá v tom, že SMALL pracuje s polem, které je v tomto bitu dynamicky konstruováno IF:
IF(groups=E$4,ROW(names)-MIN(ROW(names))+1)
Tento úryvek testuje pojmenované „skupiny“ rozsahu pro hodnotu v E4. Pokud je nalezeno, vrátí "normalizované" číslo řádku z řady čísel řádků vytvořených pomocí této části vzorce:
ROW(names)-MIN(ROW(names))+1
Výsledkem je pole, které obsahuje čísla řádků, kde existuje shoda, a FALSE, pokud ne. Pole vypadá asi takto:
(1; FALSE; FALSE; FALSE; FALSE; 6; FALSE)
Toto pole jde do MALÉHO. Hodnota k pro SMALL (n-tý) pochází z rozšiřujícího se rozsahu:
ROWS($E$5:E5)
Při zkopírování tabulky výsledků dolů se rozsah rozšíří, což způsobí přírůstek k (n.). Funkce SMALL vrací každé odpovídající číslo řádku, které je dodáváno funkci INDEX jako row_num, s pojmenovaným rozsahem „names“ jako maticí.
Zpracování chyb
Když ROWS vrátí hodnotu pro k, která neexistuje, hodí SMALL chybu # ČÍSLO. K tomu dochází poté, co proběhly všechny zápasy. K potlačení chyby použijeme IFERROR k zachycení chyby a vrácení prázdného řetězce ("").