Az általában szimplán csak Mekko-diagramnak hívott Marimekko-diagram egy kétdimenziós oszlopdiagram, amely nem csak az egyes oszlopok magasságával, de a szélességével is machinál, hogy így adja vissza a nekünk szükséges vizuális megjelenítést. Eltérés a normál oszlopdiagramokhoz képest, hogy a szükséges teljes szélesség elérése érdekében az oszlopok között nincs szünet és emellett jópár verziója ismert, amelyeknél csak a megjelenítés változik, a logika már nem - ilyen verziók például a százalék alapú Mekko, amelyben a százalékok határozzák meg az oszlopok szélességét vagy éppen a "gerinces" Mekko, amelyben kivastagított vonalakkal jelenítjük meg a magasságokat és az elválasztásokat.
A következő posztban egy roppant egyszerű kis Mekko-diagramon fogom bemutatni, hogy miről is van szó és mindenkit arra biztatok, hogy ha chartokkal kell időnként dolgoznia, akkor bátorkodjon kimozdulni a megszokott keretek közül, hiszen elsőre talán hülyeségnek tűnik, a Mekko egy elég elterjedt megjelenítési forma. Bár azt már itt az elején meg kell említeni, hogy amennyire szokták kedvelni, annyira bírálni is, hiszen jelentősebb mennyiségű adat esetén eléggé átláthatatlanná is válhat a történet.
Igazából egy ilyen chart alapja sem túl komplikált táblázat, ahogy ezen a képen látható is:
Ahogy kitűnik, az adatok számformátumra alakított százalékértékek a példánkban, a Lakosság oszlopban az összes lakosságszámhoz viszonyított megoszlás, a Bolt1, Bolt2, Bolt3, Bolt4 oszlopokban pedig az egyes településeken belül az egyes boltok bevételi arányszázaléka látható. A Mekko-diagram elkészítéséhez első lépésként készítsük el a következő segédtáblát:
Az első oszlopban a százalékos megoszlások láthatóak kumuláltan, a nullákra az adott csoportok elválasztása okán van szükségünk, az egyes százalékos értékek háromszori megjelenítése pedig segít létrehozni a lépcsőzetes hatást.
Az üres köztes mezőket is ki kell töltenünk az első oszlopban, méghozzá úgy, hogy a kis táblában az adott települést megelőző település lakosságszámához hozzáadjuk az éppen az adott sorban szereplő település lakosságszámának felét. Ergó ez Bedegkér esetében 0 + 11 lesz (hiszen nem volt előtte más település, a 22 fele pedig 11), Kapolynál pedig 22 + 17 (22 Bedegkér lakosságszáma, Kapoly lakosságszámának fele pedig lefelé kerekítve 17) és így tovább:
Ezután az így elkészült táblára toljunk be az Insert ribbonfül Charts szekciójában egy kétdimenziós Stacked Area diagramot:
Következő lépésként kattintsunk az X-tengelyre jobb gombbal, majd a felugró menüben válasszuk a Format Axis funkciót:
A jobb oldali Axis Options ablakban két dolgunk van, egyrészt Date Axis típusra állítsuk át a tengelyt, majd a lépések unitjánál állítsuk a major unitot 25-re és a minort mondjuk 10-re:
Aztán az Y-tengelyre kattintva és megnyitva az Axis Optionst, állítsuk a tengely maximum értékét 100-ra, hogy meglegyen a száz százalék:
Innentől kezdve pedig nyugodtan formázgathatjuk, ahogy csak akarjuk, egy kezdetleges végeredmény valahogy így néz ki:
És egyébként még egy fontos kérdés nyitva maradt a Marimekko-diagrammal kapcsolatban: vajon honnan a neve? Elég meglepő ám érthető módon, a diagram az ugyanilyen névre hallgató finn bútor- és divatcégtől kapta a nevét, mert a chart kinézetében erőteljesen tükrözi a finn cég által alkalmazott mintákat.
Értelemszerűen ebből kell Gantt-diagramot készítenünk, de úgy, hogy A termék csak egyetlen sorban, megszakított sávval jelenjen majd meg.
Az egyik egy azonosítót tartalmazó oszlop lesz, amelybe számként fogjuk beletenni a terméket azonosító értéket (az összes A például egyes lesz az én esetemben), illetve a kezdő és záró időpont közé beszúrjuk a köztük lévő időkülönbséget, tehát az időtartamot.
Ezt értelemszerűen az Insert ribbonfül Charts szekciójában lévő Insert Bar Chart menüből tehetjük meg.
A jobb oldalon megjelenő Axis Options menüben annyit változtassunk csak, hogy az Axis típusát Date Axisra lőjjük be:
Így már elég közel jutottunk a megoldáshoz, ahogy látjuk is, de még az Axis Options alatt a Horizontal axis crossesnél állítsuk a rádiógombot At maximum date opcióra, illetve tegyünk pipát a Dates in reverse orderbe, hogy legalább még a sorrendiséget is jól megteremtsük.
Ezután kattinsunk a már értelemszerűen nem szükséges kék színű, Kezdés névre hallgató Series-re, majd a jobb oldalt megjelenő Series Options menü Fill alpontjánál tüntessük el a kitöltést és a határokat is:
És ha ez megvan, nagyjából kész is vagyunk. Ha zavar minket ebben a formában az elsődleges függőleges tengelyen a számozás (és valószínűleg fog is) és a termékünk, eseményünk nevét akarjuk ott megjeleníteni, akkor másodlagos függőleges tengelyként hozzá is tudjuk adni ezeket, majd az elsődleges tengely kitörlésével el is jutunk a kívánt állapotba.
Azt meg ugyebár már tudjuk, hogy a szintén Insert ribbonfülről elérhető Header & Footer vagy Text szekciókból automatikusan tudunk beszúrni mai dátumot, oldalszámot, aláírást stb.:
Innentől kezdve pedig már adott, hogy mit is kell tennünk:
Egyszerűen csak töltsük ki értelemszerűen az oszlopainkat.
Egyszerűen csak a bal oldalra szúrjuk be a dátumot, majd TAB-bal lépegessünk a megfelelő helyre, hogy a további információkat is be tudjuk szúrni.
A másik kérdés, ami felmerült, a képaláírásokra vonatkozott, azaz hogyan lehet egy képhez a képnél jóval hosszabb szöveget beszúrni, mint képaláírás.
Itt vigyük be a szükséges információkat:
És kész is vagyunk:
Értelemszerűen nincs különbség aközött, ha ez a kép egy táblában vagy simán csak a szövegünkben szerepel, az Insert Caption mindig segít: 
Ez így flottul is működik, de mi van ha nem cellát szeretnénk színezgetni, hanem egy dashboard bizonyos alakzatát vagy akármilyen formát (Shape)?
Innentől kezdve pedig bármikor változik az eredeti, D11:E12 egyesített cella színe, változni fog a kép színezése is.
A szöveg a képben ne frusztráljon minket, hiszen ha nagyon szeretnénk, könnyedén kivehetjük azt is, akár úgy is, hogy az eredeti conditional formattingnál a függvények által adott válaszhoz (IGEN vagy NINCS) hozzápárosított szín egy másik cellában jelenjen meg. Ez volt mindenesetre a legegyszerűbb megoldás a Conditional Formatting érvényesítésére egy alakzaton, eltekintve attól az aprócska kis tévedéstől, hogy jelen esetben nem is alakzatról beszélünk, hanem egy szimpla képről.
Értelemszerűen azt szeretném, ha a színe zöld lenne IGEN, piros NINCS eredmény esetén.
Ezzel pedig meg is vagyunk. Nem nagy ördöngősség összehozni ezt a kódot, főleg úgy nem, hogy komolyabb VBA-ismeret sem kell hozzá, hiszen az alakzatunk nevét és a változtatott szín kódját akár makrórögzítéssel is kideríthetjük pillanatok alatt.
Most kicsit megint körbejárjuk ezt a lehetőséget, hiszen a korábbi posztban több olyan dologról nem esett szó, amelyet fontos tudnunk, ha ilyen Cross-Referencet használunk.
2. Ugyebár azt tudjuk, hogy ALT+F9 lenyomásával ezeket a kereszthivatkozásokat meg tudjuk nézni referenciaként is:
Megkeresni őket pedig (kizárólag ALT+F9-es referencianézetben) a FIND segítségével is meg tudjuk, ekkor ^d vagy ^19 kóddal kezdve kell megadnunk az adott field/bookmark nevét. Ez azért fontos, mert a most következő hármas pontban néhány olyan referenciakódot fogunk megismerni, amelyeket csak ALT+F9-es nézetben tudunk használni, a fieldeket (a cross-reference is egy field) ugyebár pedig meg kell találni.
A \h paraméter funkciójának kitalálásához sokat nem kell gondolkodni, ettől lesz hyperlink az adott cross-reference.
4. Ha a meghivatkozott szövegünket (jelen esetben 2.1.4) módosítjuk bármi másra, akkor F9 lenyomásával tudjuk frissíteni a hivatkozásokat, az adott fieldre történő kattintással:
F9 nélkül is meg tudjuk ezt tenni, egyszerűen csak nyomtatási nézetre kell váltanunk vagy szimplán elég ha Printre kattintunk, máris frissül az összes kereszthivatkozás.
Ez lehet akár egy páros lábnyom, de akár külön-külön is levadászhatunk egy jobbos és egy balos lábnyomot, a lényeg, hogy szabadon hozzáférhető képet használjunk - kereshetünk ilyet mi magunk is, de akár a PowerPoint Online Pictures toolja is segítségünkre lehet ebben.
Mivel én páros lábnyommal dolgozom, nekem ezeket az extra lépéseket is be kell szúrnom, aki külön balos és jobbos lábnyommal dolgozik, ő nyugodtan ugorhat a poszt második felére. Szóval én most az első kép kijelölése után a Picture Tools Format ribbonfül alatt elérhető Crop funkció segítségével kijelölöm a balos lábnyomot az egyik képemen:
Ha megvan a Crop, akkor szimplán Ctrl+C és Ctrl+V, hogy képként visszaillesszük a feles lábnyomot - ezt a feldaraboló lépést egyébként akár képszerkesztővel is megcsinálhatjuk előzetesen.
Megcsináljuk ugyanezt a másik képen is, hogy meglegyen a jobbos és a balos lábnyom is, majd a koncepciónknak megfelelően elhelyezzük őket a dián:
Másoljuk le a lábnyomokat annyiszor, ahányszor csak akarjuk.
Jelöljük ki az első lábnyomot, majd kattintsunk az Animations Ribbonfül alatt az Add Animations menüpontra:
Itt hozzárendelünk egy Fade (Előtűnés) típusú animációt az első lábnyomhoz, majd ezt megismételjük az összes lábnyomunkon. Itt tartunk ezután:
Szintén az Animations Ribbonfül alatt a Timing szekciót is állítsuk be:
Induljon el az animáció az előző dia befejeződése után és relatíve elég lassan jelenjenek meg a lábnyomok.
Egy ilyen roppant egyszerű animáció kivitelezésének amúgy van többféle, másik módja is, de szerintem ennél gyorsabb és hatásosabb nincs.
Hogy ebből Add-int és minden indításnál elérhető funkciót varázsoljunk, mentsük el másként (Save As) ezt a munkafüzetünket, de úgy hogy a mentés típusa Excel Add-In (.xlam) legyen:
Arra mindenképpen figyeljünk, hogy alapesetben a saját felhasználói Windows folderünkben elérhető Microsoft mappában található AddIns könyvtárba mentsük le ezt az xlam kiterjesztésű fájlt, szerencsére az Excel alapból ezt kínálja fel.
Keressük fel (Browse) majd pipáljuk be a szorzas névre hallgató add-inünket:
Látható, hogy első ránézésre rengeteg felesleges szóköz van a cellákban, amelyeket meg is próbálhatunk eltávolítani a TRIM segítségével:
De amint az ki is derül azonnal, a TRIM nem segít:
Miért nem? Azért nem, mert minden valószínűség szerint a szövegünk mondjuk egy weboldalról vagy HTML formátumú e-mailből másolt szöveg és a szóköznek látszó karakterek valójában non-breaking space-k, azaz olyan fehér, üres karakterek, amelyeket HTML-ben szélek, szóközök beállítására használhatunk a következő kis taggel:
Még mielőtt beágyazott függvényekben kezdenénk el gondolkodni, elég ha felidézzük a VLOOKUP joker-karakterei közül a "*"-ot, ami ugyebár tetszőleges hosszúságú szövegrészre utal, ergó a következő függvény fogja megadni a megoldásunkat:
Miután "*"-gal kezdjük a keresendő értékünk paraméterét, így az "Ü" bármelyik helyen állhat a szóban, de mivel nem azt a települést keressük, amelynek utolsó betűje "Ü", így a paramétert az "Ü" betű megadása után szintén egy "*"-gal zárjuk le.
Nézzünk is meg gyorsan egy másik, hasonló kérdést.
Látható, hogy miután a negyedik karakter esetében vizsgáljuk az "m" meglétét, így három kérdőjellel kezdődik a VLOOKUP első paramétere és mivel nem tudhatjuk, hogy utolsó karakter-e az "m", így csillaggal zárjuk a paramétert.
A fenti egyszerűbb kis trükkök után most jöjjön egy kis elmélkedés a VLOOKUP sebességéről, ugyanis aki dolgozott már igazán nagy adathalmazzal (sorok tízezreiről, oszlopok tucatjairól beszélünk), az tudja, hogy ez a függvény csak a kis mintapéldáim esetében ad azonnali választ, sokszor tapasztalhatunk az állapotsoron százalékban mérhető kalkulációs előrehaladást, ami esetenként több percig tartó várakozást jelent a felhasználónak.
Bináris keresésről akkor beszélhetünk, ha sorbarendezzük az adathalmazunkat a keresendő érték mentén, majd közelítő egyezésre keresünk a VLOOKUP utolsó paraméterének TRUE értékre állításával.
A példán ez most nem jött vissza egyértelműen, de akinek lesz majd lehetősége, ideje, tegyen próbát ugyanezzel egy több tízezer soros keresésnél is - értelemszerűen persze validálja az eredményt, hogy meggyőződjön a sikerességéről.