Nagyon gyakran felmerülő igény az Excel használata során különböző munkalapok összemásolása egy munkalapra, akár csak az átláthatóság, akár konszolidált adatkezelés céljából - akárhogy is, az esetek többségében a sima CTRL+C és CTRL+V megoldáshoz fordulnak a felhasználók. Pedig vannak más megoldások is, ezek közül mutatok be most többet is. Adott tehát a következő kis tábla az első sheeten, és egy hasonló van a másodikon is, ezeket szeretnénk összesíteni:
Már egyszerűen csak a Ribbon füleinek böngészése alapján is szemet szúrhat a Data fül alatt megbúvó Consolidate funkció, amely már a leírása alapján is valamilyen művelet alapján tömbösít, konszolidál adatokat több munkalapról:
De ha rákattintunk a funkcióra és felugrik a műveleti ablak, már látjuk is a gyenge pontját ennek az opciónak - sima összemásolást nem tudunk vele elvégezni, csak műveletek alapján tudunk konszolidálni, ahogy a funkció neve is utal rá:
Ahogy látható a fenti képen is, egy sima összegzést választottam a Function legördülő menüjéből, majd megadtam a konszolidálandó tartományokat, mindkét sheeten kizárólag a számokat tartalmazó oszlopokat, majd bepipáltam a Top row label checkboxot, hogy legyen fejléce az új táblámnak:
Látható, összeadta a sorokban szereplő számokat, ahogy a funkciónál ki is választottuk az összegzést. Értelemszerűen persze ha az egész táblát adjuk be referenciaként mindkét sheetről, és beadjuk a Left Column checkbox pipáját is, akkor más lesz az eredmény:
De ez csak azért néz most ilyen jól ki, mert nincs két egyforma városnevünk, ami alapján összegezhetne a konszolidációs funkció. Szóval ha tényleg szeretnénk adatokat konszolidálni, akkor használható a Consolidate, ha szimplán csak összemásolást szeretnénk, akkor másfelé kell kutakodnunk. De ne gondoljunk kapásból VBA-kódra, az Excel még mindig rejt magában beépített lehetőségeket a fenti célra. Hozzunk létre egy új sheetet, mondjuk Összes néven:
Ezután ugyanezen a sheeten maradva a Data fül alatt lévő From Other Sources legördülő menüből válasszuk ki a From Microsoft Query opciót:
Miután elindult a Microsoft Query, a felugró adatforrás ablakban válasszuk az Excel Files* menüpontot:
Ezután válasszuk ki azt a munkafüzetet, amelyben a két (vagy több) összemásolandó sheet található:
Az ezután felugró Add Tables ablakot Close gombra kattintással zárjuk be:
Ezután válasszuk a fenti ikonsorról az SQL feliratú kis gombot, ami után látható válik egy SQL statement ablak:
Ezután jön maga a statement, ami a következő lesz:
SELECT *
FROM "C:\book1.xlsx"."Sheet1$"
Union
SELECT *
FROM "C:\book1.xlsx2"."Sheet2$"
Tehát válasszuk ki (SELECT) az első sheet minden adatát majd egyesítsük (Union) a második sheet összes adatával.
Ha erre most okét nyomunk, már látni is fogjuk az eredményünket Microsoft Queryben:
Már nem maradt hátra más, mint a File menüben taláható Return Data to Microsoft Excel funkcióval visszaküldeni az eredményt az Összes névre hallgató sheetre:
És íme:
A következő posztban további összemásolási lehetőségeket fogunk még majd áttekinteni, remélhetőleg azonban a fenti is használható alternatívát jelent egyes Olvasók számára.