Hivatkozott Excel verzio: Excel 2007 Excel 2010 Excel 2013 Excel 2016 Office365
A fórumba érkezett egy kérdés, ami eszembe juttatta, hogy még 2014-ben írtam egy cikket az egyedi darabszám megállapításáról, és már akkor szerettem volna megírni a folytatást, azaz hogy hogyan megy az egyedi elemek kiválogatása. Úgy tűnik, most jött el a pillanat. Szóval a feladat:
Egyedi elemek kigyűjtése? Számtalan módja van
- PIVOT
- Irányított szűrő
- Ismétlődések eltávolítása
- MS QUERY
- Makró
Ez igaz, de mindegyik statikus. Tehát ha megváltozik a lista, amiből gyűjteni kell, újra meg kell csinálni. Rendben, ha PIVOT vagy MS QUERY, akkor csak frissíteni kell a lekérdezést. Vagy ha a makrót eseményhez kötjük, akkor az is fél-automatizálható. De mi van, ha azt szeretnénk, hogy képlettel, azaz dinamikusan lehessen legyűjteni az egyedi elemeket?
Nos, csodák azért nincsenek, hiszen a most ismertetésre kerülő módszer is csak addig dinamikus, azaz teljesen automatikus, ha az input adatokban az egyedi elemek száma nem növekszik. Ha ez megtörténik, akkor a képletet lejjebb kell húzni.
Egyedi elemek kiválogatása tömbképlettel
A fenti ábra szerint a képletet a D2-be írjuk.
=HAHIBA(INDEX($A$2:$A$12;HOL.VAN(0;DARABTELI($D$1:D1;$A$2:$A$12);0));"")
Input tartomány: A2:A12
DARABTELI
A tömböt ezzel a függvénnyel képezzük, ami a D oszlop első sorától az aktuális soráig (a képletet lehúzva bővül), hogy az Input tartomány elemei egyesével hányszor szerepelnek már. Ez kezdetben egy csupa nullából álló tömböt eredményez, mivel a D1 cellában nem fog szerepelni egyik input elem sem.
HOL.VAN
Megkeresi az első nullát az előbbi tömbben. Ahol megtalálja, az annyiadik elem még nincs kiválogatva. Elsőként ez rögtön az első lesz, úgyhogy a D2-be írt képletnél egy 1-est kapunk.
INDEX
Az INDEX pedig kiveszi az Input tartomány előbb kiszámolt sorszámú elemét, jelene eseteben az elsőt, ami Mór.
HAHIBA
Ez csak azért van benne, hogy ha lefelé húzva már minden egyedi elemet kigyűjtöttünk, (a DARABTELI tömbjében nem lesz már nulla), akkor ne hibaüzenet legyen, hanem üres szöveg.
Mi van, ha bővülhet a bemeneti lista?
Csak akkor érdekes, ha új, egyedi elem is megjelenhet benne. Ebben az esetben javasolnám a forrástartományt dinamikus névvel ellátni, és a leválogatás oszlopában pedig lejjebb kell húzni a képletet. Addig húzzuk, amíg újra üres cellát nem kapunk
Egyedi elemek rendezett listája
No, ilyesmit csak a PIVOT táblával, SQL-lel vagy makróval lehetne csinálni, de az említett forrásban található egy zseniális megoldás, ami nem csak kigyűjti, de rendezi is az egyedi elemeket. A képlet, amit az E2-be írtam:
=HAHIBA(INDEX($A$2:$A$12; HOL.VAN(KICSI(HA(DARABTELI($E$1:E1; $A$2:$A$12)=0; DARABTELI($A$2:$A$12; "<"&$A$2:$A$12); ""); 1); DARABTELI($A$2:$A$12; "<"&$A$2:$A$12); 0));"")
Hát, ezt csak pedzegetem, de talán értem. Az elmagyarázása elég nagy falat, de a videóban megkísérlem.
Kedves horvimi!
Van egy adatbázisom, amiben a fenti képlet nagyon hasznos, azonban érdekelne, hogy van-e mód úgy alkalmazni a képletet, hogy néhány megnevezett elemet szándékosan kihagyjon? Tehát a fenti példával élve ugyan azt az eredményt kapjuk, de Budapestet ne vegye bele a felsorolásba akkor sem, ha többször jelenik meg az oszlopban.
Válaszát előre is köszönöm!
Üdv.:
Zsolt
Szia horvimi,
A fenti példafeladatot ki lehet azzal bővíteni, hogy számítsa ki az ‘Egyedi lista rendezve’ elemeit a mellette lévő oszlopban, hogy hányszor fordult elő az eredeti listában?
Segítségedet előre is köszönöm
András
Az egy sima DARABTELI (COUTIF) függvény.
De ha ez az igény, akkor inkább PIVOT táblával csinálnám
Imre