{{indexmenu_n>7}}
====== Munka több munkalappal ======
Egy munkalapot elnevezni és használni egy nagyon hasznos koncepció ha kevés, és ismert munkalappal dolgozunk. De sok esetben több, vagy egyenesen sok, hasonló szerkezetű munkalappal kell egyszerre dolgozni. Tipikusan ilyen faladat az adatkonszolidáció és munkalap(ok) szétdarabolása.
===== Adatok konszolidálása több forrás munkalapról egy cél munkalapra =====
A konszolidálandó forrás munkalapok már léteznek, és a fileneveik ismertek. A legjobb gyakorlat a **WBook List Start** és **WBook List Next** folyamatlépéseket (a Worksheet és If / Lists kategóriákban a [[hu:user_interface:toolbar|Folyamat Eszköztáron]]) használni ugyanazon műveletek több munkalappal történő elvégzéséhez.
A 'Workbook List' paraméterben a forrás munkalapok munkafüzeteit megadhatja:
* a filenevekben ? és * dzsókerkarakterek használatával (e.g. c:\en\mappam\*.xlsx minden munkafüzethez az en\mappam mappában); és
* több mappából és filenévvel, amelyek pontosvesszővel (;) vannak elválasztva (pl. c:\2018\riport.xlsx;c:\2019\riport.xlsx)
==== Ismerd a folyamatod egy munkalapra; aztán válts többre ====
Az első lépés a folyamat megadása: először egyetlen forrás munkalapra, mintha nem is lenne több. Használd a **WSheet Use** folyamatlépést a cél munkalap megadásához, majd egy másik **WSheet Use** lépést az egyetlen forrás munkalaphoz. Amikor a folyamat kész, kövesd ezeket a lépéseket:
- cseréld le az egyetlen forrás munkalap **WSheet Use** folyamatlépését a **WBook List Start** folyamatlépésre az összes munkalaphoz a folyamat elején (NB: tartsd meg a **WSheet Use** lépést a cél munkalaphoz!);
- add meg az összes forrás munkalapot a **WBook LIst Start** 'Workbook list' paraméterében;
- add hozzá a folyamat végéhez a **WBook List Next** folyamatlépést;
- használd a **WBook List Start** [[hu:concepts:djeeniname|Djeeni nevét]] mint forrás munkalap hivatkozást minden folyamatlépésben az egyetlen munkalap **WSheet Use** lépésben megadott Djeeni neve helyett;
- cseréld le a cél munkalapon a cellák és tartományok hivatkozásait, hogy
* hozzáadhass sorokat;
* beszúrhass sorokat; és
* összegezhess értékeket ahelyett, hogy minden egyes munkalap felülírná ugyanazt a cellát újra és újra. Ezeket lásd lejjebb részletesen.
Kész!
==== Hozzáadás a céladatok végéhez ====
Az egy munkalapos konszolidáció átmásolt néhány (feldolgozott) adatot a forrás munkalapról a cél munkalap bizonyos celláiba/ tartományaiba. A konszolidációs sablonban pedig van elég hely, hogy az összes forrás munkalap adatait bemásolhassuk. De hogyan találjuk meg az első üres sort/cellát? Az első üres sor - természtesen- egy sorral lejjebb/cellával jobbra van az utolsó sortól/cellától amelyikben adat van. Az utolsó, adatot tartalmazó, sort könnyű megadni az A oszlopban:
#RowEnd
és egy másik oszlopra (pl. F):
#RowEnd|F
Egy sorral lejjeb lépni (hogy megkapjuk az első üres sort):
[+[#RowEnd|F]+1]
Tegyük fel, hogy az egy munkalapos verzió átmásolt (a **Cell Set** vagy **Range Set** vagy **Range Copy/Move** folyamatlépések valamelyikével) egy adatot a **wsConsolidation!D2** cellába. Hozzáadásnál (azaz azért, hogy elkerüljük a már bent lévő adat felülírását) ezt meg kell változtatni erre: **wsConsolidation!D[+[#RowEnd|D]+1]**.
==== Beszúrás a céladatok elejére ====
Egy másik módja a konszolidáció elkészítésének (amennyiben a cél munkalap sablonja csak egy fejlécet tartalmaz fix struktúra nélkül), hogy a forrás munkalapról származó új sorokat a cél munkalapon a már ottlévő sorok //elé// szúrjuk be. Ekkor nincs szükség a munkalap alján lévő első üres sor kiszámolására.
Tegyük fel, hogy a konszolidációs lista a wsConsolidation munkalap harmadik sorában kezdődik. Ahhoz, hogy a konszolidáció több munkalappal is működjön, ezeket a változtatásokat kell elvégezni az adatfeldolgozó lépésekben:
* Ha **Range Copy/Move** lépést használsz, akkor az egyetlen változtatás az Insert / Overwrite parameter Insert értékre állítása.
* Ha **Cell Set** vagy **Range Set** lépést használsz, akkor ezt a lépést meg kell, hogy előzze egy **[[hu:user_guide:worksheet_modify#Inserting rows/columns into a worksheet|Insert Column/Row]]** lépés, amelyik beszúr egy új, üres sort a negyedik sor elé.
==== Összegzések ====
A konszolidáció egyrészről adatok összegyűjtése listákba. Másrészről viszont adatok összegzése (összeadása, átlagolása stb.) több helyről a cél munkalap egy cellájában. Egy munkalapnál (azaz egyetlen forrás adatnál) egy egyszerű **Cell Set** lépés elvégzi az adat másolását. És több forrás munkalapnál? Voila! A több forrás munkalapos verzió is a **Cell Set** lépést használja. Az egyetlen változtatás a már a cellában lévő érték felhasználása egy MS Excel függvény segítségével, amivel előállítható az új célérték.
Példa 1: A forrás adatok összegét kell kiszámolni.
'Egyetlen forrás munkalap
Cell Set Cell: wsTarget!C4
Value: [=wsSource!D5]
'Listás verzió
Wbook List Start
...
Cell Set Cell: wsTarget!C4
Value: [+[=wsTarget!C4]+[=wsSource!D5]]
...
WBook List Next
Példa 2: A forrás adatok átlagát kell kiszámolni. Ehhez szükségünk van egy segédcellára, amelyik számolja az átlagolandó adatok számát. A **Wbook List** lépés előtt beállítjuk 0-ra, majd a **Wbook List** lépés után az összegzett értéket elosztva megkapjuk a keresett átlagot.
'Egyetlen forrás munkalap
Cell Set Cell: wsTarget!C5 'az adatok száma
Value: 1
Cell Set Cell: wsTarget!C4 'az egyetlen adat átlaga
Value: [=wsSource!D5]
'Listás verzió
Cell Set Cell: wsTarget!C5 'kezdőérték
Value: 0
WBook List Start
...
Cell Set Cell: wsTarget!C5 'az adatszámlálót megnöveljük eggyel
Value: [+[=wsTarget!C5]+1]
Cell Set Cell: wsTarget!C4 'csak összeadunk
Value: [+[=wsTarget!C4]+[=wsSource!D5]]
...
WBook List Next
Cell Set Cell: wsTarget!C4 'itt számoljuk az átlagot
Value: [+[=wsTarget!C4]/[=wsTarget!C5]]
===== Egy forrás munkalap adatainak szétválogatása több cél munkalapra =====
Egy tipikus feladat egy kívülről származó forrás MS Excel munkalap adatainak (pl. egy beszállító cég által megadott adathalmaz vagy egy IT rendszer riportja) szétválogatása. A fő kérdés, hogy el kell dönteni, hogy hány és milyen cél munkalapot kell egyáltalán elkészíteni? A folyamat elején a cél munkalapok még nem léteznek, így a fileok nevei sem ismertek. Továbbá, az elkészítendő cél fielok halmaza is minden futtatáskor különböző lehet a forrás adatai vagy egyéb információk alapján. Mindezek fényében Djeeni három módon tud cél munkalapokat létrehozni:
- Ha a cél munkalapok száma rögzített, akkor azokat meg lehet adni a **WBook List** lépésben;
- Ha a cél munkalapokat valamilyen egyéb információ (például a cost centerek vagy a cégen belüli részlegek listája) alapján kell létrehozni, akkor ez a lista használható a **Row List** vagy **Column List** lépésekben.
- Ha a cél munkalapokat a forrás munkalap saját információi alapján kell létrehozni, akkor a **WSheet Split** folyamatlépés használható
Lássuk az egyes módokat részleteiben!
==== Cél munkalapok létrehozása a WBook List folyamatlépéssel ====
Ez a mód hasonló az [[#Ismerd a folyamatod egy munkalapra; aztán válts többre|konszolidációhoz]]. A cél munkalapok (és -ha szükséges- a kapcsolódó munkafüzetek) egyesével lesznek létrehozva és feldolgozva. Az éppen aktuális munkalapra a **WBook List** folyamatlépés [[hu:concepts:djeeniname|Djeeni nevével]] hivatkohatsz.
==== Cél munkalapok létrehozása a Row List folyamatlépéssel ====
Egy forrás adathalmaz feldolgozásakor sokszor kell használnunk valamilyen egyéb törzsadatlistát. Legtöbbször cost centerek, részlegek, kapcsolatok, partnerek listáját. A Djeeni folyamatnak a forrás munkalap adatait a törzsadatlista egyes elemeihez tartozóan kell szétválogatnia; azaz a folyamatot a törzsadatlista vezérli. Djeeni a **Row List Start**...**Row List Next** folyamatlépéseket használja a törzsadatlista elemeinek egyesével történő eléréséhez és a kapcsolódó műveletek elvégzéséhez. A folyamat konkrét lépései a következők:
- **WSheet Use** a forrás munkalap használatba vételéhez
- **WSheet Use** a törzsadatmunkalap használatba vételéhez
- Opcionálisan egy cél munkafüzet létrehozása (a **WBook New** folyamatlépéssel), amennyiben minden cél munkalap egyetlen munkafüzetbe kerül
- **Row List Start** a törzsadatmunkalapon
- VAGY Elkészíteni a következő munkafüzetet (**WBook New**), amennyiben minden cél munakalap különböző munkafüzetekbe kerül; VAGY Hozzáadni a következő munkalapot a **Row List** előtt létrehozott munkafüzethez;
- Elvégezni a szükséges műveleteket (legtöbbször szűrni az adatokat majd a leszűrt adatokat a cél munkalapra másolni):
- a **Row List** [[hu:concepts:djeeniname|Djeeni nevével]] hivatkozva a törzsadatmunkalap adataira;
- a forrás munkalap [[hu:concepts:djeeniname|Djeeni nevével]] hivatkozva a forrás munkalap adataira;
- a létrehozott/hozzáadott munkalap [[hu:concepts:djeeniname|Djeeni nevével]] hivatkozva a cél munkalap adataira;
- **Row List Next** a törzsadatmunkalap következő sorára lépéshez
Ezekből a lépésekből a következő Djeeni folyamatot lehet készíteni (különböző munkafüzetekkel). Figyeld meg, hogy hogyan kap minden munkafüzet egyedi nevet a törzsadatlista információi alapján a **WBook New** folyamatlépésben.
WSheet Use Djeeni name: wsSourceData 'forrás adathalmaz
WSheet Use Djeeni name: wsDepartments 'törzsadatlista
Row List Start Djeeni name: rlDepts
Worksheet: wsDepartments
Row from: 2
Row to: #RowEnd|C
WBook New Djeeni name: wsDepTarget
Filename: [=rlDepts!D#] 'a részleg neve a törzsadat D oszlopból
Type: Target
Worksheet Excel name: Report 2020 June
... 'az aktuális cél munkafüzet műveletei a wsDepTarget Djeeni név alatt
Row List Next
==== Cél munkafüzetek létrehozása a WSheet Split folyamatlépéssel ====
Hamarosan!
==== Forrás tartományok kiválasztása szűréssel ====
Ha a cél munkalapok elkeszítésének struktúrája kész, akkor a forrás adathalmaz megfelelő részeit kell kiválasztani az egyes cél munkalapokhoz. Ha a kiválasztás a forrás munkafüzet egy oszlopában lévő valamely ismert adat (vagy egy fix adat vagy egy törzsadatforrásból a **RowList** folyamatlépés használatával származó törzsadat) alapján történik, akkor a szűrés alkalmazása a legjobb gyakorlat. Djeeni az MS Excel Autofilter funkcióját (ami az oszlopok fejlécében lévő lenyíló dobozokként ismert) kínálja a **WSheet Filter Add** és a **WSheet Filter Clear** folyamatlépések formájában.
Ha több **WSheet Filter Add** szűrést is használunk egy munkalapon, akkor azok összeadódnak (mint egy ÉS kapcsolat) és csak azok a sorok kerülnek kiválasztásra, amelyek mindkét szűrési feltételnek megfelelnek. Minden **Range** és **Cell** folyamatlépés a szűrt adatokkal dolgozik.
Példa 1: Fix (kevés) számú cél munkafüzet és ismert szűrési adatok.
WSheet Use Djeeni name: wsSourceData
WBook List Start Djeeni name: wlTarget
Workbook list: c:\wbook1.xlsx;c:\reports\wbook2.xlsx
If Condition: [#wlTarget|NAME]=wbook1
WSheet Filter Add Worksheet: wsSourceData
Column: D
Criteria 1: 1500
... 'a wlTarget Djeeni névvel használt első cél munkafüzet műveletei
WSheet Filter Clear
End If
If Condition: [#wlTarget|NAME]=wbook2
WSheet Filter Add Worksheet: wsSourceData
Column: E
Criteria 1: UK
... 'a wlTarget Djeeni névvel használt második cél munkafüzet műveletei
WSheet Filter Clear
End If
WBook List Next
Példa 2: A forrás szétválogatása a törzsadatokban lévő részlegek nevei alapján. Figyeld meg, hogy hogyan kap minden munkafüzet egyedi nevet a törzsadatlista információi alapján a **WBook New** folyamatlépésben.
WSheet Use Djeeni name: wsSourceData 'forrás adathalmaz
WSheet Use Djeeni name: wsDepartments 'törzsadatlista
Row List Start Djeeni name: rlDepts
Worksheet: wsDepartments
Row from: 2
Row to: #RowEnd|C
WBook New Djeeni name: wsDepTarget
Filename: [=rlDepts!D#] 'részleg név a törzsadatok D oszlopában
Type: Target
Worksheet Excel name: Report 2020 June
WSheet Filter Add Worksheet: wsSourceData
Column: D 'részleg ID a forrás D oszlopában
Criteria: [=rlDepts!F#] 'részleg ID a törzsadatok F oszlopában
... 'a wsDepTarget Djeeni név alatt az aktuális cél munkafüzet műveletei
WSheet Filter Clear
Row List Next
==== Forrás tartományok kiválasztása kikereséssel ====
Néhány forrás adathalmaz olyan tartományokat tartalmaz, amelyek a kezdő és végértékeikkel azonosítottak. Például egy hónap az első napjával kezdődik és addig tart, amíg a következő hónap első napja el nem jön. Ebben az esetben a tartmány a két cellával azonosítható, ameleyeket a **Cell Lookup** folyamatlépésben kereshetünk ki. A folyamat lépései:
- Keressük ki a tartomány első celláját a **Cell Lookup** folyamatlépéssel;
- Keressük ki a tartomány utolsó (vagy az utolsó utáni) celláját egy újabb **Cell Lookup** folyamatlépéssel;
- Adjuk meg a tartományt a **Range Use** folyamatlépésben a két megtalált cella segítségével.
WSheet Use Djeeni name: wsData
Cell Lookup Djeeni name: ceElso
Value: 2020-11-1 'november elseje
Range: wsData!C1:C20000
Cell Lookup Djeeni name: ceUtolsoUtan
Value: 2020-12-1 'december elseje
Range wsData!C1:C20000
Range Use Djeeni name: rgNovember
Range: wsData!C[#ceElso|row]:C[+[#ceUtolsoUtan|row]-1]
===== Hivatkozás az aktuális munkalapra egy munkafüzetlistában=====
A munkafüzetlistáknak saját [[hu:concepts:djeeniname|Djeeni nevük]] van. Ezek a Djeeni nevek ugyanúgy viselkednek, mint a **WSheet Use** folyamatlépésben egy munkafüzetnek megadott Djeeni név. Mindkétfajta Djeeni nevet használhatod egy munkalapra hivatkozáshoz a megfelelő helyen.
WSheet Use Djeeni name: wsTarget
Cell Set Cell: wsTarget!C3
WBook List Start Djeeni name: wlTarget
Cell Set Cell: wlTarget!C3
===== Hivatkozás az aktuális sorra egy sorlistában =====
A sorlistáknak mindig van egy aktuális sora, amelyre a sor száma heleyett a # jellel lehet hivatkozni. Amennyiben több sorlista van egymásba ágyazva, a # jel kiegészíthető a megfelelő sorlista [[hu:concepts:djeeniname|Djeeni nevével]].
WSheet Use Djeeni name: wsKulso
WSheet Use Djeeni name: wsBelso
Row List Start Djeeni name: rlKulso
Worksheet: wsKulso
Row List Start Djeeni name: rlBelso
Worksheet: wsBelso
Cell Set Cell: wsKulso!D[#|rlKulso] 'az rlKulso sorlista aktuális sora
Cell Set Cell: wsBelso!D# 'a legközelebbi (legbelső) sorlista aktuális sora