Telefonszámunk: 1-472-0679

Egyedi értékek megszámolása

2014-11-01 - horvimi - Megtekintések száma: 7,223 - Kategória: Képletek, Tömbképletek
Hivatkozott Excel verzio: Excel 2007 Excel 2010 Excel 2013

Azt a problémát járjuk most körbe, hogy hogyan lehet megszámolni egy oszlopban lévő különböző egyedi értékek számát. Tehát olyan, mintha az ismétlődések eltávolítása után megszámolnánk a maradék elemek számát.

Alapvetően két elv szerint oldható meg a probléma. Az egyik egy segédoszlopoban használ egy képletet, és azt használjuk az összesítéshez. A másik pedig a már-már szokásosnak nevezhető tömbképlet. Ez utóbbiból hármat is összeszedtem, de bizonyára vannak még továbbiak is.

A példában a vizsgált oszlopban számok vannak, de szöveges, vagy vegyes típusú adatok esetén is működnek a megoldások.

Segédoszlopos megoldás

Az ötlet az, hogy a tartomány minden elemére nézzük meg, hogy hányadszor fordul elő az egész oszlopban, és ha először, akkor adjunk vissza egyet, ha már többedszer, akkor nullát. Végül összeadjuk a segédoszlopot, és megkapjuk az egyedi elemek számát.

Van itt egy nagyon érdekes trükk, amit több helyzetben lehet használni, ha megismertük. Ez pedig az a tartományi hivatkozás, ami az elejétől az aktuális sorig hivatkozik. A megoldás az “A2” cellában kezdődő oszlop esetén a következő:

$A$2:A2

Tehát a kezdőcellát lefixáljuk, a második cellát, ami kezdetben ugyanaz, mint a kezdőcella, pedig nem. Ebből következően, ha elkezdjük lefelé húzni, akkor a hivatkozás mindig az A2-n kezdődik, és az aktuális sorban végződik.

Ezzel a módszerrel lehet például gördülő összeget számolni az “A” oszlop mellé.

=SZUM($A$2:A2)

Lássuk a medvét!

elso-elofordulas-keplet

Ha először találkozik egy értékkel a B oszlopban, akkor egyest ad, különben nullát. Ezután nem lesz más dolgunk, mint összeadni a C oszlop celláit, és megvagyunk.

Tömbképletes megoldások

A különböző megoldások abban különböznek, hogy hogyan kezelik a nulla tartalmú és az üres cellákat. Mindhárom képlet az összesítést a SZORZATÖSSZEG ( SUMPRODUCT ) függvénnyel végzi, és nem szükséges Ctrl-Shift-Enterrel lezárni.

Teljesen kitöltött tartomány

Ez a képlet a legegyszerűbb, de bátran alkalmazhatjuk, ha a vizsgálandó tartomány minden cellája tartalmaz értéket.

=SZORZATÖSSZEG(1/DARABTELI(B4:B11;B4:B11))

egyedi-ertekek.tombkeplet-1

Minden elemre kiszámolja, hogy mennyiszer van benne a tartományban, és minden eredménynek veszi a reciprokát, majd az így kapott tömb elemeit összegzi. Azon az elven működik, hogy ha egy érték többször szerepel, akkor minden előfordulásánál ugyanaz a szám lesz. Ezek reciprokainak összege pedig 1-et ad.

Vegyük pl. , hogy egy érték háromszor van benne a tartományban. A DARABTELI minden előfordulásra 3-at fog adni, ezek reciproka 1/3. Ezeket összeadva pedig 1-et kapunk.

Ezt a megoldást nem lehet alkalmazni üres cellákat is tartalmazó tartományra, mert ilyenkor a reciprok számítás, és így az egyész képlet a #ZÉRÓOSZTÓ eredményt adja.

Üres cellák beleszámolása

Ez a képlet az üres cellát mint egyedi értéket figyelembe fogja venni, tehát a képen látható tartományra 5 különböző értéket fog visszaadni. (6, 7, 9, 10, üres). Ahogy látszik, csak az a különbség az előzőhöz képest, hogy a második tömb elemeihez (így az üres cellákhoz is)  hozzáfűz egy üres sztringet, így kerülve el az ürességet.

=SZORZATÖSSZEG(1/DARABTELI(D4:D11;D4:D11&""))

egyedi-ertekek.tombkeplet-2

Üres cellák figyelmen kívül hagyása

Ha az üres cellákat nem szeretnénk beleszámolni az eredménybe, akkor ez lesz a mi barátunk. Az előző képlet van kibővítve úgy, hogy egy megelőző tömbben csak oda tesz IGAZ (1) értéket, ahol nem üres a cella. Ezt a tömböt szorozza a második tömb elemeivel, ahol az előfordulás számok vannak. Az üres cellák helyén nulla lesz, a többi helyen megmarad az előfordulás szám. Tehát a példánkban most 4-et kapunk, az üres cella nem lesz benne az összesítésben.

=SZORZATÖSSZEG((NEM(ÜRES(D4:D11))*(1/DARABTELI(D4:D11;D4:D11&""))))

egyedi-ertekek.tombkeplet-3

Letölthető minta munkafüzet

Egyedi-ertekek-megszamolasa

A VIDEÓ mutatja működés közben.

  • Egyedi értékek megszámolása

Vélemény, hozzászólás?