Vzorec aplikace Excel: Extrahujte více shod do samostatných řádků -

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 ("").

Zajímavé články...