Office Guru

A bútoripari cég, amely egy Excel-diagramnak is nevet adott

2017. január 11. - Office Guru

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:

mekko1.jpgAhogy 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:

mekko2.jpgAz 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:

mekko3.jpgEzutá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:

mekko4_1.jpgKövetkező lépésként kattintsunk az X-tengelyre jobb gombbal, majd a felugró menüben válasszuk a Format Axis funkciót:

mekko5.jpgA 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:

mekko6.jpgAztá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:

mekko7.jpgInnentől kezdve pedig nyugodtan formázgathatjuk, ahogy csak akarjuk, egy kezdetleges végeredmény valahogy így néz ki:

mekko8.jpgÉ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.

Események, feladatok csoportosítása egy sávba Gantt-diagramon

Kis kihagyás után, amelyet az új év meglepően masszív kezdete okozott, ismét folytassuk a szívemnek oly kedves különféle Office-problémák felszámolását, ezúttal egy kedves Olvasóm Exceles kérdésének megválaszolását fogom posztolni. A kérdés röviden nagyjából annyi volt, hogy létezik-e megoldás arra, hogy a táblázatkezelőben a Gantt-diagramunk ismétlődő események, termékek, járművek, feladatok stb. esetén ugyanazon eseményeket egyben, szaggatott sávként jelenítse meg, ne külön sorokban.

Adott a következő kis példatábla:

gantt0.jpgÉ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.

Ehhez első lépésként szükségünk lesz két segédoszlopra:

gantt1_1.jpgAz 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.

Ezután a példa esetén kijelöljük a G-H-I oszlopokban szereplő tartományt (figyeljünk arra, hogy az Azonosító oszlop headerjét legalább időleges töröljük ki itt, mert legalábbis nálam, ez mindig kavarodást okozott), majd beszúrunk egy kétdimenziós Stacked Bar diagramot:

gantt2_1.jpgEzt értelemszerűen az Insert ribbonfül Charts szekciójában lévő Insert Bar Chart menüből tehetjük meg.

Ezután kattintsunk a függőleges tengelyünkre jobb gombbal, majd a felugró menüstruktúrából válasszuk a Format Axist:

gantt3_1.jpgA jobb oldalon megjelenő Axis Options menüben annyit változtassunk csak, hogy az Axis típusát Date Axisra lőjjük be:

gantt4_1.jpgÍ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.

gantt5_1.jpgEzutá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:

gantt6.jpg

gantt65.jpgÉ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.

Ezt a megoldást egyébként jópár évvel ezelőtt nekem is úgy mutatták meg, de azóta sem találkoztam sehol semmilyen formában ettől eltérő megoldási módszerrel erre a feladatra, ráadásul innentől kezdve nagyjából bárhogy hegesztgethetjük már a kis diagramunkat, a kívánt hatást elértük.

Két könnyed kérdés az Office szövegszerkesztőjéhez kapcsolódóan

Avagy Boldog Új Évet Mindenkinek!

Az új év első posztjában olvasói kérdések megválaszolására kerül sor ismét, amelyek most a Wordhöz kapcsolódnak, megtörve ezzel a posztok között uralkodó, elég erős Excel-hegemóniát. Szóval az első kérdés (amelyet közben a kérdés feltevője is megválaszolt magának) az volt, hogy hogyan lehet egy Word dokumentum láblécében (Footer) több oszlopban információkat elhelyezni, mondjuk bal oldalon dátum, középen oldalszám, jobb oldalon pedig valamilyen szöveg.

Az első megoldást az Insert ribbonfül alatt található Header & Footer szekció Footer menüje rejti, egyszerűen csak háromoszlopos láblécet kell beszúrnunk:

footer1.jpgAzt 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.:

footer2.jpgInnentől kezdve pedig már adott, hogy mit is kell tennünk:

footer3.jpgEgyszerűen csak töltsük ki értelemszerűen az oszlopainkat.

De tegyük fel, hogy nem háromoszlopos láblécet szúrtunk be (vagy szúrtak be nekünk) - ekkor sem kell megijednünk, hiszen a legalapabb Footert beszúrva:

footer4.jpgEgyszerű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.

footer5.jpgA 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.

Adott a képünk, majd a References ribbonfül alatt található Captions szekcióból kattintsunk az Insert Caption funkcióra:

footer6.jpgItt vigyük be a szükséges információkat:

footer7.jpgÉs kész is vagyunk:

footer8.jpgÉ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:

footer9.jpg

Conditional Formatting alakzatokra

Egy Excel-tanfolyamon a Conditional Formatting bemutatása valószínűleg már az első órák egyikén sorra kerül, hiszen egy elég gyakran szükséges és hasznos kis funkcióról van szó a táblázatkezelőben, annak ellenére, hogy vannak korlátai, amelyeket csak ilyen-olyan trükkökkel lehet kijátszani. Egy ilyen problémakört fogok bemutatni most két lehetséges megoldással, de értelemszerűen nem csak ez a két megoldás létezik, bármilyen ötlet, gondolat jöhet hozzászólásban akár itt, akár Facebookon.

Szóval adott a következő kis táblázat, beépítve egy alap Conditional Formattinggal, amely pirosra színezi a D11:E12 egyesített cellát, ha a benne lévő függvény eredménye NINCS, zöldre ha az eredmény IGEN:

usainbolt1.jpgEz í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)?

Formákra nem működik a maga szigorúan vett értelmében a Conditional Formatting, így nyúlhatunk a legegyszerűbb és legkézenfekvőbb megoldáshoz: kimásoljuk, majd a dashboardba beillesztjük képként (Linked Picture a Paste Special menüben) a már conditional formattingot tartalmazó cellát.

usainbolt2.jpgInnentő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.

usainbolt3.jpgA 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.

Ha egy valódi Shapet szeretnénk conditional formattingra reagáltatni, akkor a második gondolat, ami felötlik a felhasználóban, az egy rövid VBA-kódsor, hiszen Visual Basicból jóval egyszerűbb vezérelhetőek a formák színei.

Itt van ez a beszúrt, pluszjelnek tűnő alakzat:

usainbolt4.jpgÉrtelemszerűen azt szeretném, ha a színe zöld lenne IGEN, piros NINCS eredmény esetén.

Abból indulunk ki, hogy nem szeretnék semmilyen kódot manuálisan futtatgatni vagy gombhoz hozzárendelni, így egy

Private Sub Worksheet_Change(ByVal Target As Range)

eseménnyel kezdjük a kódsorunkat, azaz ha bármi megváltozik az adott munkalapon, le fog futni a kis program. Innentől kezdve pedig nagyjából mintha leírnánk angolul, hogy mit szeretnénk csinálni, azaz ha a D11-es cellában szereplő érték NINCS (If Range("D11") = "NINCS"), akkor az aktív sheeten található Cross 5 nevű Shapet jelölje ki (ez lesz az ActiveSheet.Shapes.Range(Array("Cross 5")).Select), majd változtassa meg a színét pirosra:

If Range("D11") = "NINCS" Then
ActiveSheet.Shapes.Range(Array("Cross 5")).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)

Értelemszerűen ellenkező esetben (ELSE), legyen a színe zöld:

Else
ActiveSheet.Shapes.Range(Array("Cross 5")).Select
Selection.ShapeRange.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent6

usainbolt5.jpgEzzel 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.

usainbolt6.jpgSzövegként a kódunk:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D11") = "NINCS" Then
ActiveSheet.Shapes.Range(Array("Cross 5")).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
ActiveSheet.Shapes.Range(Array("Cross 5")).Select
Selection.ShapeRange.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent6
End If
End Sub

Egy zeneszám, ami az Excelről szól és aminek a klipjében az Excellel bűvészkednek

Interjú Kovács Gáborral, a milyenferi. zenekar basszusgitárosával

Néhány nappal ezelőtt töltötte fel az internetre a milyenferi. névre hallgató zenekar az Excel című dalához készült klipet és a szám szövege valamint a klip is annyira a blog profiljába vág, hogy nem lehetett szó nélkül elmenni mellette.

Először is íme a videó, hallgassátok meg és gyönyörködjetek a halálpontosan időzített, a szöveghez tökéletes passzoló klipben:

Miután már kellőképpen ráhangolódtatok a témára, a folytatásban jöjjön egy interjú, amelyet a zenekar basszusgitárosával, Kovács Gáborral készítettem a zenekarról és specifikusan az Excel című számról és a videóklipről.

A milyenferi. zenekar Gáborék definíciója szerint urbanista business punk stílusú zenét játszik, amelyben a business azt jelöli, hogy a tagok mindannyian értelmiségi, üzleti életben dolgozó fiatalok, a célközönség urbanista, a zene pedig punkos lendületű rock. A tagok civil foglalkozása elég széles körben mozog, például a klipet is készítő Gábor programozó, de van a tagok között bankár is.

OfficeGuru: Honnan jött az Excel című szám alapötlete és a szövege?

Gábor: Az alapötlet már nem teljesen egyértelmű, hogy kitől származik a tagok közül, de a számot végleges formájára Kata, a milyenferi. énekesnője szabta.

OfficeGuru: És miután megvolt a szám, kinek az érdeme volt a videóklip koncepciója és megalkotása?

Gábor: Ahogy általában mindig, ezt is közösen csináltuk a többi taggal, közös ötletelés után vágtunk bele a kivitelezésbe. A fő csapásvonal elég egyértelmű volt, azaz hogy az Excelről kell szólnia a klipnek, de szerettük volna, ha a szöveg és valamilyen formában a zenekar is szerepelne benne.

Szóval a csapat kitalálta a klip koncepcióját, majd Gábor Exceles ismeretei és egy kis Google-kutakodás felhasználásával meg is valósította a művet, a legnagyobb fejtörést azonban az okozta, hogyan lehetne pontosan 3 perc 14 másodpercbe pontosan belehelyezni a történéseket.

OfficeGuru: És pontosan mi is történik a videóklipben?

Gábor: Nagyon szeretném, ha mindenki elgondolkodna egy kicsit rajta, hogyan is csinálhattam meg a dolgot és akár többször meg is nézné a klipet, hiszen az egész történet vágás nélkül a nézők szeme előtt zajlik. A trükk lényege egyébként a cellák háttérszínének makró általi beállítása a cellákban lévő színkódok alapján.

Egy hasonló példát majd a blog hasábjain is meg fogunk közösen csinálni, de a Gáborral való beszélgetésünkből kiderült, hogy a legnagyobb problémát a pontos és hatékony végrehajtás okozta, hiszen nem nagyon lehetett például a gépelésnél sem hibázni.

OfficeGuru: És a videó jobb oldalán zajló Skype-beszélgetésnek mi a története?

Gábor: Ez a gitáros, Gábor feladata volt, neki kellett pontosan a dalszöveg ritmusában készítenie az üzeneteket, miközben én az Excellel bűvészkedtem. Jópár óra volt összehozni a dolgot.

OfficeGuru: Mikor várható a következő új dal és klip? Illetve merre láthatunk benneteket koncertezni a közeljövőben?

Gábor: Nem ontjuk magunkból a dalokat, nagyon fontos számunkra, hogy a dalnak legyen mondanivalója is. Mindenesetre van már jópár ötletünk, csak a megvalósításukkal haladunk kicsit lassabban. Túl sok koncertünk nincs, a jövő évben 2-3 koncertet tervezünk, ezeknek időpontjáról értelemszerűen beszámolunk a Facebook-oldalunkon.

OfficeGuru: Végezetül kérlek árulj el két apró érdekességet magadról - melyik a kedvenc zenekarod és a kedvenc Excel-funkciód?

Gábor: A sok jó zenekar között kedvencnek talán az Ugly Kid Joe-t mondanám, amelynek nemrégiben sikerült is részt vennem egy koncertjén, a kedvenc Excel-funkció pedig mi más lenne, mint az FKERES (VLOOKUP)?

Így a poszt végén is szeretném még egyszer megköszönni Gábornak a lehetőséget a beszélgetésre és mindenkinek ajánlom a milyenferi. zenekar Facebook-oldalát illetve többi, elérhető számát is - és egy kis böngészéssel még az is kiderülhet, hogy honnan a banda különleges neve és hogy Batman lenyomná-e Pókembert.

Tovább elmélkedünk a WORD kereszthivatkozásairól

A WORD szövegszerkesztőjét az esetek 95%-ában a felhasználók általában csak egyszerűen arra használják, amire kitalálták: szöveget pötyögnek, formáznak és nyomtatnak benne. Ez így rendben is van, viszont nagyobb mennyiségű szöveg, nagyobb méretű dokumentumok kezelésénél célszerű ismerni azokat a lehetőségeket, amelyeket a program kínál annak érdekében, hogy gyorsabb és hatékonyabb legyen a munkánk.

Ebben a posztban már volt szó a könyvjelzőkről (Bookmark), amelyek segítségével könnyedén linkelhetünk egy WORD dokumentumon belül, ráadásul ezt szövegrészek automatikus frissítésére is felhasználhatjuk.

Ahogy a következő kis képen látszik is, a fenti posztban bemutatott Bookmarkos-lehetőség segítségével készítettem (bár több hasonló módszer is van erre, például Cross-Referenceként is be tudjuk hivatkozni az adott szövegrészt) egy hivatkozást a 2.1.4-es szekcióra, azaz az erre való kattintás után az adott szövegrészhez jutunk:

word1.jpgMost 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.

1. Ez felhasználható szövegrészek ismételt felhasználására is, amennyiben ezeket egyszerre szeretnénk könnyedén frissíteni. Olyasmire gondoljunk, mint az Excelben a Paste Link opció, azaz, ha egy cella tartalmát másoljuk, majd Paste Linkként illesztjük be, akkor ha az eredeti cellát bármikor frissítjük, frissül az összes többi Paste Link beillesztés is. Jelen esetben ezt úgy fogjuk elkészíteni, hogy az Insert ribbonfül Links szekciójából a Cross-reference menüre kattintva elkezdjük beszúrni a Bookmarkunkat annyiszor ahányszor csak akarjuk és oda, ahova csak akarjuk.

word2.jpg

word3.jpg2. Ugyebár azt tudjuk, hogy ALT+F9 lenyomásával ezeket a kereszthivatkozásokat meg tudjuk nézni referenciaként is:

word4.jpgMegkeresni ő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.

3. Referencianézetben azért jó az ilyen hivatkozásokat megnézni, mert így rengeteg opciót tudunk alkalmazni a mezőkön, amelyek szintén csak megkönnyítik a munkánkat. Például ahogy a 2. pontban beszúrt képen látszik, az első crossreference esetében kizárólag egy \h paraméter látható, a több, másolt linknél van egy \*MERGEFORMAT is. Most néhány ilyen paraméter jelentését fogom bemutatni:

\*MERGEFORMAT - bármilyen frissítés ellenére az adott szövegrész/hivatkozás meg fogja őrizni formátumát és ha bármikor módosítjuk egy hivatkozásunk formátumát, akkor a WORD automatikusan hozzáadja ezt a paramétert

Mit tud mondjuk a \*CHARFORMAT?

word5.jpgAhogy látható, ez a kapcsoló azt teszi lehetővé, hogy az egész field formátuma ugyanolyan legyen, mint a referencia első karakterének formátuma, lásd az R betűt:

word6.jpgA \h paraméter funkciójának kitalálásához sokat nem kell gondolkodni, ettől lesz hyperlink az adott cross-reference.

De hogy lehet formázgatni ezeket a kereszthivatkozásokat egyszerre, anélkül, hogy egyesével kellene végigkattintgatni őket? A fentebb már említett FIND segítségével, ahol szimplán csak annyit kell keresnünk, hogy ^19 és a field neve és máris az összes referenciát módosítani tudjuk.

word7.jpg4. 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:

word8.jpgF9 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.

Valószínűleg elég sokan most továbbugrottak egy jóval izgalmasabb cikkre egy nagy legyintés kíséretében, de a poszt végén hangsúlyozni szeretném, hogy a kereszthivatkozások a WORD nagy fegyverének számítanak, használjuk őket bátran!

1 perces lábnyomos animáció PowerPointban

Sokan sok fórumon leírták, elmondták már, hogy a Microsoft PowerPointja már elavult technikának számít, ha egy igazán ütős prezentációt szeretnénk összedobni, de a véleményektől és lehetőségektől függetlenül mégsem szabad temetni az Office prezentációs eszközét, hiszen a lehetőségeink ha nem is korlátlanok, de mégiscsak igen szélesek. Mindössze ismerni kell ezeket a lehetőségeket és hogy ezt a folyamatot kicsit erősítsem, a következő posztban egy elég sok témában felhasználható lábnyomos animáció pár perces elkészítését fogom bemutatni.

Hogy kezdjünk hozzá? Adott az üres diánk, amin az animációt szeretnénk végrehajtani, ide első lépésként be kell szúrnunk egy lábnyomot:

footprints1.jpgEz 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.

Ha beillesztettük, akkor a Ctrl+C és Ctrl+V kombináció segítségével másoljuk le legalább még egyszer:

footprints2.jpgMivel é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:

footprints3.jpgHa 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.

footprints4.jpgMegcsiná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:

footprints5.jpgMásoljuk le a lábnyomokat annyiszor, ahányszor csak akarjuk.

footprints6.jpgJelöljük ki az első lábnyomot, majd kattintsunk az Animations Ribbonfül alatt az Add Animations menüpontra:

footprints70.jpgItt 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:

footprints8.jpgSzintén az Animations Ribbonfül alatt a Timing szekciót is állítsuk be:

footprints9.jpgInduljon el az animáció az előző dia befejeződése után és relatíve elég lassan jelenjenek meg a lábnyomok.

Aztán ha elindítjuk az Animations ribbonfül Preview funkciójával az előnézetet, már láthatjuk is, hogy milyen szuperül működik:

footprints10.jpgEgy 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.

Az állandó elérhetőség kedvéért: custom UDF hozzáadása az Excelhez, mint Add-in

Néhány nappal ezelőtt egy posztban arról volt szó, hogy tudunk hozzáadni egy saját funkciót a standard formula-listához és akkor merült fel a kérdés, hogyan tudnánk megcsinálni azt, hogy ez a funkció az Excel minden egyes megnyitásánál elérhető legyen. A válasz a kérdésre az Add-in volt, amit egyébként roppant gyorsan és egyszerű módon tudunk elkészíteni.

Szóval visszacsatolva a korábbi íráshoz, adott a következő roppant kis funkciónk (és csak az ismétlés a tudás anyja elven bemásolom ide megint ennek matematikai függvények közé történő beszúrását is):

Function szorzas(param1 As Integer, param2 As Integer)
szorzas = param1 * param2
End Function

Sub adding()
Application.MacroOptions Macro:="szorzas", Category:=3
End Sub

szorzas1.jpgHogy 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:

szorzas2.jpgArra 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.

Eztuán menjünk szépen az Excel Options menübe, ahol a bal oldalon válasszuk az Add-Ins menüpontot:

szorzas3.jpg

Itt a felugró ablak alján a Manage Excel Add-ins legördülő menü melletti Go gombra kattintva jutunk az add-inek listájához:

szorzas4.jpgKeressük fel (Browse) majd pipáljuk be a szorzas névre hallgató add-inünket:

szorzas5.jpgNyomjunk egy okét és már kész is vagyunk.

Innentől kezdve ha bezárjuk az eredeti Excelt, bármikor nyitunk egy újat, a funkció elérhető lesz:

szorzas6.jpg

A nem működő TRIM magyarázata

Alapesetben ha felesleges szóközöket tartalmazó cellákkal, táblázatokkal kell dolgoznunk, akkor szinte kapásból a TRIM függvényhez nyúlunk, amely ugyebár definíciója szerint a szavak közötti egyes szóközöket leszámítva eltávolítja egy szövegből a felesleges szóközöket. Olvasónk is így tett, mégis olyasmivel szembesült, ami váratlanul érte: a TRIM nem működött. De persze mint gyorsan kiderült, működik a funkció, igenis jól működik, máshol kell keresni a magyarázatot.

Nézzük csak a következő kis táblát:

trim.jpgLá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:

trim2.jpgDe amint az ki is derül azonnal, a TRIM nem segít:

trim3.jpgMié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:

 

Ha ezt tudjuk és azt tapasztaljuk, hogy a TRIM nem működik, akkor máris fordulhatunk egy beágyazott SUBSTITUTE függvény bevetéséhez, amellyel először az összes non-breaking space-t sima szóközre alakíthatjuk, utána pedig ráereszthetjük a TRIM-et.

Na de hogy tegyük ezt meg? Azt ugye tudjuk, hogy a SUBSTITUTE függvény első paramétere a célcella, ahol az átalakítandó értékünk van, második paramétere az a karakter, amelyet a harmadik paraméterként megadott karakterre akarunk lecserélni.

Ergó már csak egy non-breaking space és egy szóköz karakter beadására van szükség, amelyet simán nem olyan egyszerű beadni a formulába, így ezen karaktereket a CHAR függvény felhasználásával fogjuk beadni, hiszen a CHAR a beállított karakterkészletből (alapesetben ASCII) dobja vissza a nekünk szükséges karaktert a karakter számának megadásával. Az ASCII karakterkészlet adott karaktereihez tartozó kódját bárhol le tudjuk vadászni az interneten, én ezt most nem másolom be ide.

CHAR(160) a non-breaking space karakterkódja, CHAR(32) pedig a sima szóközé, így a beágyazott SUBSTITUTE valahogy így néz ki:

SUBSTITUTE(C5,CHAR(160),CHAR(32))

Ezután pedig már csak a TRIM-et kell ráeresztenünk és kész is vagyunk:

trim4.jpg

VLOOKUP-tuning joker-karakterekkel és teljesítményjavítással

Már több korábbi posztban is elmélkedtem a VLOOKUP függvény különféle lehetőségeiről, felhasználási módjairól, de még mielőtt azt hinnénk, hogy nem lehet több újat elmondani az egyik leggyakrabban használt Excel-funkcióról, jöjjön egy újabb poszt a függvényről néhány apró trükkel és információval.

Lássuk a következő kis táblát és mellette máris az első kérdésünket, avagy hogy tudjuk megtalálni az első, "Ü" betűt is tartalmazó településünket és a hozzá tartozó bevétel-információt:

vlookuptrick1.jpgMé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:

vlookuptrick2.jpgMiutá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.

vlookuptrick3.jpgNézzünk is meg gyorsan egy másik, hasonló kérdést.

"*" ugyebár tetszőleges számú karakterre utal a szövegünkben, viszont előfordulhat olyan eset, amikor pontosan tudjuk, hogy hányadik helyen álló karaktert akarjuk megvizsgálni, ilyenkor jön a képbe a "?" joker-karakter, amely egy darab karaktert hivatott jelölni. Ergó, ha megnézzük a következő példát:

vlookuptrick4.jpgLá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.

vlookuptrick5.jpgA 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.

És ezután még jön az a finomság, amikor esetleg valamit változtatunk az adathalmazban és indul újra az egész kalkuláció. A kérdés most az, hogy van-e bármilyen módszer ennek felgyorsítására, változtatására? Van pár trükk erre a célra, talán a legkönnyebben megvalósítható a bináris keresés használata.

Lineáris keresésről akkor beszélhetünk, ha egyszerűen "EXACT MATCH"-re, tehát pontos egyezésre keresünk a VLOOKUP függvényünkkel (utolsó paramétert FALSE-ra állítjuk), majd automatikus kitöltéssel akár több tízezer soron is bevetjük a függvényt. Ilyenkor az Excel szépen fogja magát és az első sortól kezdve az utolsóig végignézi az adathalmazt, hogy megtalálja az első egyezést (ha sok egyezésünk van, akkor már trükköket kell bevetnünk, hogy az x-edik egyezést adja vissza a függvény).

Ez egy egyszerű lineáris keresés:

vlookuptrick7.jpgBiná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.

Tehát az előbbi példán, ha az azonosító alapján sorbarendezzük a céltáblánkat (ahol a településnév található), majd közelítő keresést hajtunk végre, akkor értelemszerűen gyorsabb lesz a függvény, mint lineáris keresés esetén.

De erre sokan felszisszenhetnek, hiszen ezzel iszonyú hibalehetőségeket teszünk a tábláinkba, kereséseinkbe. Így is lenne, ha egy az egyben közelítő keresést használnánk, de ehelyett be kell dobnunk egy trükköt:

Lineáris keresés:

=VLOOKUP(D4,$I$4:$J$11,2,FALSE)

Bináris keresés nem megbízható eredménnyel:

=VLOOKUP(D4,$I$4:$J$11,2,TRUE)

Bináris keresés megbízható eredménnyel:

=IF(VLOOKUP(D4,$I$4:$J$11,1,TRUE)<>D4,"N/A",VLOOKUP(D4,$I$4:$J$11,2,TRUE))

Mit is csinálunk? Az IF-be ágyazott első VLOOKUP azt nézi meg, hogy a közelítő keresés által a VLOOKUP-nak visszaadott érték megegyezik-e pontosan a keresett értékkel (tehát mindig a kiinduló oszlopban keres) és ha nem, akkor kiadja a megszokott N/A üzenetet, ellenkező esetben már nézi is a tényleges céloszlopot - azaz úgy tűnik, mintha ugyanazt megcsinálnánk két VLOOKUP és egy IF függvénnyel, amit a lineáris keresés pontos egyezőségi paraméterével tennénk, de van egy különbség:

A sebesség jelentősen jobb az IF-es bináris keresésben, mint a lineárisban.

vlookuptrick8.jpgA 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.

süti beállítások módosítása
Mobil