Vzorec aplikace Excel: Extrahujte jedinečné položky ze seznamu -

Obsah

Obecný vzorec

(=INDEX(list,MATCH(0,COUNTIF(uniques,list),0)))

souhrn

Chcete-li ze seznamu nebo sloupce extrahovat pouze jedinečné hodnoty, můžete použít maticový vzorec založený na INDEX, MATCH a COUNTIF. V zobrazeném příkladu je vzorec v D5, zkopírovaný dolů, následující:

(=INDEX(list,MATCH(0,COUNTIF($D$4:D4,list),0)))

kde „list“ je pojmenovaný rozsah B5: B11.

Poznámka: toto je maticový vzorec a musí být zadán pomocí kláves Control + Shift + Enter.

Vysvětlení

Jádrem tohoto vzorce je základní vyhledávání pomocí INDEXU:

=INDEX(list,row)

Jinými slovy, uveďte INDEX seznam a číslo řádku a INDEX načte hodnotu, kterou přidá do jedinečného seznamu.

Tvrdá práce je zjistit číslo ROW, které dá INDEX, abychom dostali pouze jedinečné hodnoty. To se provádí pomocí MATCH a COUNTIF a hlavní trik je zde:

COUNTIF($D$4:D4,list)

Zde COUNTIF spočítá, kolikrát se položky, které se již nacházejí v jedinečném seznamu, objeví v hlavním seznamu, pomocí rozšiřující reference rozsahu, $ D $ 4: D4.

Rozšiřující se reference je na jedné straně absolutní, na druhé relativní. V tomto případě, jak je vzorec zkopírován dolů, se odkaz rozbalí a zahrne více řádků do jedinečného seznamu.

Všimněte si, že reference začíná v D4, jeden řádek nad první jedinečnou položkou, v jedinečném seznamu. To je záměrné - chceme počítat položky * již * do jedinečného seznamu a nemůžeme zahrnout aktuální buňku bez vytvoření kruhového odkazu. Začneme tedy na řádku výše.

Důležité: ujistěte se, že nadpis jedinečného seznamu se neobjeví v hlavním seznamu.

Pro kritéria v COUNTIF používáme samotný hlavní seznam. Pokud je zadáno více kritérií, vrátí funkce COUNTIF více výsledků v poli. Na každém novém řádku máme jiné pole, jako je toto:

(0;0;0;0;0;0;0) // row 5 (1;0;0;0;1;0;0) // row 6 (1;1;0;0;1;0;1) // row 7 (1;1;1;1;1;0;1) // row 8

Poznámka: COUNTIF zpracovává více kritérií se vztahem „NEBO“ (tj. COUNTIF (rozsah, („červená“, „modrá“, „zelená“)) počítá červenou, modrou nebo zelenou.

Nyní máme pole, která potřebujeme k nalezení pozic (čísel řádků). K tomu používáme MATCH, nastavený na přesnou shodu, k nalezení nulových hodnot. Pokud dáme pole vytvořená výše COUNTIF do MATCH, dostaneme toto:

MATCH(0,(0;0;0;0;0;0;0),0) // 1 (Joe) MATCH(0,(1;0;0;0;1;0;0),0) // 2 (Bob) MATCH(0,(1;1;0;0;1;0;1),0) // 3 (Sue) MATCH(0,(1;1;1;1;1;0;1),0) // 6 (Aya)

MATCH vyhledává položky hledáním počtu nula (tj. Hledáním položek, které se dosud neobjevují v jedinečném seznamu). To funguje, protože MATCH vždy vrátí první shodu, když existují duplikáty.

Nakonec jsou pozice přiváděny do INDEXU jako čísla řádků a INDEX vrací název na dané pozici.

Verze bez pole s VYHLEDÁVÁNÍM

Pomocí flexibilní funkce VYHLEDÁVÁNÍ můžete vytvořit vzorec bez pole, pomocí kterého můžete extrahovat jedinečné položky:

=LOOKUP(2,1/(COUNTIF($D$4:D4,list)=0),list)

Konstrukce vzorce je podobná výše uvedenému vzorci INDEX MATCH, ale LOOKUP může operaci pole zpracovat nativně.

  • Funkce COUNTIF vrátí počty jednotlivých hodnot ze seznamu v rozšiřujícím se rozsahu $ D $ 4: D4
  • Porovnáním s nulou se vytvoří pole TRUE a FALSE hodnot
  • Číslo 1 je vyděleno polem, čímž se vytvoří pole 1 s a # DIV / 0 chyb
  • Toto pole se stává vyhledávacím vektorem uvnitř LOOKUP
  • Vyhledávací hodnota 2 je větší než jakékoli hodnoty v lookup_vector
  • LOOKUP bude odpovídat poslední bezchybné hodnotě ve vyhledávacím poli
  • LOOKUP vrací odpovídající hodnotu v result_vector, pojmenovaný rozsah "list"

Extrahujte položky, které se objeví jen jednou

Výše uvedený vzorec LOOKUP lze snadno rozšířit pomocí logické logiky. Chcete-li extrahovat seznam jedinečných položek, které se ve zdrojových datech objeví jen jednou, můžete použít vzorec takto:

=LOOKUP(2,1/((COUNTIF($D$4:D4,list)=0)*(COUNTIF(list,list)=1)),list)

Jediným doplňkem je druhý výraz COUNTIF:

COUNTIF(list,list)=1

Zde COUNTIF vrací řadu počtů položek takto:

(2;2;2;2;2;1;2)

které jsou porovnány s 1, což má za následek pole hodnot TRUE / FALSE:

(FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE)

které fungují jako „filtr“ k omezení výstupu na položky, které se ve zdrojových datech vyskytnou pouze jednou.

Dobré odkazy

Jak extrahovat jedinečný výraz (Oscar Cronquist, Získat digitální nápovědu)

Zajímavé články...