Lehetőségek két oszlop értékeinek összehasonlítására Excelben

2016. április 20. - Office Guru

Ha adott két oszlopnyi számadatunk, amelyeket össze akarunk hasonlítani, akkor az Excel elég sok lehetőséget kínál számunkra, hogy ezt megtegyük. Most azokról az esetekről nem ejtek szót, amikor a célunk két oszlop duplikációnak, eltéréseinek kimutatása esetleges törlése, mert erről már volt itt poszt korábban, most egyszerűen csak azokat a lehetőségeket szeretném listába gyűjteni a teljesség igénye nélkül, amelyekkel adatokat tudunk összehasonlítani.

Az első képen látszik is, hogy konkrétan mire gondolok, a célunk annak meghatározása, hogy mely sorokban nagyobb a márciusi értékünk, mint a februári, amely eredmény aztán további elemzési lehetőségeket kínálhat - persze ez csak egy roppantul leegyszerűsített példa, a cél a lehetőségek összegyűjtése.

sx01.bmpSzóval mi az első, amire bárki gondolna egy ilyen kérdés kapcsán?

1. IF

Igen, az IF függvény lenne az, amiről már jó sokat írtam és az Excel felhasználók túlnyomó többsége ismeri és stabilan használja is. Szimplán csak első paraméterbe bedobjuk azt a logikai tesztet, amit el akarunk végezni (jelen esetben a két oszlop összehasonlítását), majd a második illetve harmadik paraméterbe beírjuk, hogy mit tegyen a formula, ha a logikai tesztünk igaz vagy hamis eredménnyel végződik.

sx02.bmp2. GESTEP

Többféle felhasználási módja is van a GESTEP függvénynek, ezek közül az egyik az ilyen jellegű összehasonlítások elvégzése, hiszen az első paramétereként megadott számot hasonlítja össze a második paramétereként megadott "thresholddal", azaz felső értékkel (ha ezt elhagyjuk, akkor mindig nullához hasonlít) és attól függően ad vissza egy 1-est vagy egy 0-t, hogy alatta vagy felette van-e a mi értékünk. Jelen esetben tehát egyik oszlopunk az összehasonlítandó szám, a másik a felső érték.

sx03.bmp3. SUMPRODUCT

A kedvencem. Egy rendkívül sokoldalú tömbfüggvény (itt bővebben róla), amely összehasonlítást is lehetővé tesz. Mivel alapesetben most a célunk az, hogy 0-t vagy 1-t kapjunk vissza, ezért dupla mínuszjellel kezdjük a függvényt, ami TRUE és FALSE értékeket alakít számokká. Ezután tekintsünk el attól, hogy mi a SUMPRODUCT alapfunkciója és egyszerűen a két tömbünk összehasonlítását szúrjuk be, mint első tömbparaméter majd CTRL+SHIFT+ENTER és kész is vagyunk. Az eredmény nem olyasmi, mint amit az IF vagy a GESTEP adna vissza, de egy az egyben megtudjuk, hogy hány olyan esetünk van, ahol márciusban nagyobb az értékünk, mint februárban.

sx04.bmp4. AND

Az AND formulával több feltételt és logikai tesztet tudunk ráengedni táblázatainkra, de itt most erről szó sincs, egyszerűen csak összehasonlítjuk a két oszlopot, mint egy sima IF és máris kapunk egy TRUE vagy FALSE értéket. Ha át akarunk váltani számokra, simán csak szorozzuk meg az eredeti AND függvényt eggyel.

sx06.jpg5. VBA

Nagyon egyszerűen és gyorsan el tudjuk végezni az összehasonlításunkat VBA-ban is, a már itt is jópár alkalommal átbeszélt technikákra van csupán szükségünk, azaz leginkább csak egy FOR...NEXT utasításra. Első lépésként definiálunk három változót, egyet az aktív sheetünknek, kettőt pedig sima Integerként a ciklushoz szükséges számainknak.

Az aktív sheetünknek létrehozott változót értelemszerűen feltöltjük az aktív sheetünkkel, x változónkba pedig betöltjük táblánk utolsó sorának számát.

sx07.jpgEzután már csak a ciklusunk van hátra, azaz jelen esetünkben a harmadik sorunktól kezdve az utolsó sorunkig elvégezzük azt a vizsgálatot, hogy minden sorban összehasonlítjuk a március és február oszlopokat és amennyiben március a nagyobb, akkor egyet írunk a meghatározott (most I) oszlopba, egyébként pedig 0-t.

sx08.jpgHa ezt lefuttatjuk (rendelhetjük gombhoz, eseményhez, amit csak akarunk), akkor meg is kapjuk azt az eredményt, amit más úton is elértünk már.

sx09.jpgÉn eddig jutottam a lehetőségek halmazában első gondolattal, de valószínűleg csak a felszínt kapargattam. Szóval milyen egyéb lehetőségeink/módszereink vannak még, amivel ugyanezt az összehasonlítást el tudjuk végezni? 

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr348648856

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

toportyánféreg 2016.04.22. 20:38:51

simán =(B1>C1)*1 is megteszi,
de a =B1>C1 is, ha elég az IGAZ/HAMIS