You are on page 1of 78

TMOP-4.1.

2/A/1-11/1-2011-0015 Egszsggyi gyvitelszervez Szakirny:


Tartalomfejleszts s Elektronikus Tananyagfejleszts a BSc kpzs keretben

Irodai programcsomagok hasznlata


s programozsa
e-Book
Nmeth Felicin

Tartalom
1.

Bevezet.......................................................................................................................................... 6

2.

Szakdolgozat ksztse Wordben ..................................................................................................... 7

3.

Formulk hasznlata Excelben ....................................................................................................... 10

4.

rlapok ksztse Excelben ............................................................................................................ 16

5.

Krlevl ......................................................................................................................................... 19

6.

Kimutatsok................................................................................................................................... 21

7.

Tovbbi munkalap-fggvnyek ...................................................................................................... 26

8.

Makrk hasznlata......................................................................................................................... 32

9.

Egyszer Visual Basic programok ................................................................................................... 35

10.

A Visual Basic Editor................................................................................................................... 40

11.

A Basic tovbbi nyelvi elemei ..................................................................................................... 44

12.

Hatkony makrk rsa .............................................................................................................. 51

13.

Automatikus dokumentumgenerls ......................................................................................... 53

14.

Futsi hiba kezelse ................................................................................................................... 56

15.

Fggsgek feltrkpezse ........................................................................................................ 59

16.

Munkalapok kezelse Visual Basicbl......................................................................................... 62

17.

Adat importlsa webrl............................................................................................................ 63

18.

Makrk halad hasznlata ......................................................................................................... 69

19.

Elads ksztse ....................................................................................................................... 73

20.

Alternatv programcsomagok: OpenOffice.org / LibreOffice ....................................................... 75

brk jegyzke
2-1. bra. Kpalrs beszrsa angol nyelv krnyezetben. ................................................................... 8
3-1. bra. Kpernykp a vralkoholszint-kiszmt munkalaprl. ......................................................... 11
3-2. bra. Egy egyszer Szum formula.................................................................................................... 12
3-3. bra. Relatv s abszolt cmzs. A knnyebb rthetsg kedvrt a B oszlop mellett a B oszlopban
lv cella formulja tallhat................................................................................................................. 13
3-4. bra. Els ksrlet a buli rinak felsorolsra. Az F2 cella tartalmazza a kezdsi idpontot. ........... 13
3-5. bra. A buli rinak helyes felsorolsa. ........................................................................................... 13
3-6. bra. Plda az FKERES munkalapfggvny hasznlatra. ................................................................. 14
3-7. bra. Plda a HOL.VAN s az INDEX munkalapfggvnyek hasznlatra .......................................... 16
4-1. bra. Adatrvnyessg ellenrzsnek belltsi lpsei................................................................. 17
4-2. bra. Lapvdelem belltsi lehetsgei.......................................................................................... 18
4-3. bra. A zrols tulajdonsg mdostsa .......................................................................................... 19
5-1. bra. Krlevl ltrehozsa egy dokumentumsablon s egy Excel tblzat segtsgvel ................... 20
6-1. bra. Nvadatsok gyakorisga (minta) .......................................................................................... 22
6-2. bra. res kimutats-szerkeszt ..................................................................................................... 23
6-3. bra. jszlttek szma venknti bontsban ................................................................................ 24
6-4. bra. Keresztnevek npszersge a 2008-2010-es idszakban ........................................................ 24
6-5. bra. Kikldetssel kapcsolatos mintaadatok.................................................................................. 25
7-1. bra. Mintaadatok a flvvgi jegy kiszmtshoz ......................................................................... 27
7-2. bra. Tjkozdsi lehetsgek a munkalapfggvnyekrl ............................................................. 29
7-3. bra. Az els ngy rszfeladat megoldsa. ...................................................................................... 29
7-4. bra. A legjobb jegyek megkeresse egyetlen formula msolsval ................................................ 30
7-5. bra. A feladat megoldsa nhny rszfeladat utn........................................................................ 31
8-1. bra. Hallgati krvnyek. Mintaadat makr-rgztshez................................................................ 33
8-2. bra. A Fejleszteszkzk szalag .................................................................................................... 33
8-3. bra a tanszk_vlts makr forrskdja ........................................................................................ 35
3

9-1. bra. A tanszktr makr egyszerbb vltozata ........................................................................... 36


9-2. bra. A kt megolds a hallgati krvnyeket tartalmaz tblzat tanszk adatainak trsra....... 37
9-3. bra. A ngyfle ciklusutasts szintaktikja.................................................................................... 38
9-4. bra. A feltteles utasts szintaktikja s egy plda a hasznlatra ............................................... 39
9-5. bra. Mintaadatok a soronknti legkisebb szm kivlasztshoz s a hozzkapcsold megolds... 40
10-1. bra. Nyomkvetsi lehetsgek a Visual Basic Editorban ............................................................ 41
10-2. bra. Vltoz rtknek vizsglata nyomkvets sorn ................................................................ 42
10-3. bra. Plda az azonnali ablak hasznlatra................................................................................... 43
10-4. bra. Azonnal vgrehajtott parancsok az azonnali ablakban.......................................................... 44
11-1. bra. Plda a sorfolytat karakter hasznlatra ............................................................................ 44
11-2. bra. A For utasts szintaktikja s egy plda a hasznlatra ....................................................... 45
11-3. bra. Plda a Value s a Formula kzti klnbsgre ...................................................................... 46
11-4. bra. Srgyrak adatai .................................................................................................................. 48
11-5. bra. Az adat-talakts feladat megoldsa rszproblmkra val bontssal................................. 49
11-6. bra. Msodik megolds az adattalakts feladatra..................................................................... 50
12-1. bra. Makr gyorstsa a kpernyfrissts kikapcsolsval .......................................................... 52
12-2. bra. Plda a sttuszsor hasznlatra............................................................................................ 53
13-1. bra. Cmtrknt generlt dokumentum....................................................................................... 54
13-2. bra. Forrsadatok a cmtras dokumentumhoz ........................................................................... 54
13-3. bra. XML szer formtumban megadott forrsadatok................................................................. 54
13-4. bra. A helyes formtum tmakirsok ....................................................................................... 55
13-5. bra. A ltszm cmke megformzsa kt cservel........................................................................ 56
14-1. bra. Egyszer plda a futsi hibra.............................................................................................. 57
14-2. bra. Pldk a hibakezel eljrsok hasznlatra .......................................................................... 57
14-3. bra. Tovbbi pldk a hibakezelsi mdszerekre......................................................................... 59
15-1. bra. A Kplet szalag kpletvizsglat csoportja s egy minta az eldk feltrsra ....................... 60
15-2. bra. A Kpeltek szalag Szmts csoportja ................................................................................... 60
15-3. bra. Mark, ami kiszmtja az aktv cella eldcellinak sszegt ................................................. 61
16-1. bra. Kdrszlet a munkalapok neveinek kiratsra ..................................................................... 62
16-2. bra. A munkafzet els munkalapjnak eltvoltst megvalst eljrs .................................... 63
17-1. bra. rfolyamadatok importlsa a Magyar Nemzeti Bank weboldalrl..................................... 64
17-2. bra. Kdrszlet az els rszfeladathoz........................................................................................ 65
17-3. bra. A Bad Teach cm film importlsa sorn rgztett makr (egyszerstett) forrskdja ........ 66
4

17-4. bra. Az id vltzban trolt filmazonosthoz kapcsold adatok importlsa (programrszlet) . 67


17-5. bra. A Bad Teacher cm filmhez importlt adatok s az azokbl ellltott grafikon ................... 68
17-6. bra. A grafikon generlshoz rgztett makr forrskdja ......................................................... 68
17-7. bra. A feladat megoldsnak utols kdrszlete ......................................................................... 69
18-1. bra. Nyomgomb vezrlelem ltrehozsa s makrhoz val rendelse ..................................... 70
18-2. bra. A gyorselrsi eszkztr testreszabsnak lpsei ............................................................... 71
18-3. bra. A mdostott gyorselrsi eszkztr..................................................................................... 71
18-4. bra. Egyszer plda egy fggvny deklarcira ........................................................................... 72
18-5. bra. Basicben rt munkalapfggvny ........................................................................................... 73
19-1. bra. Az irnytott beilleszts kt lpse ....................................................................................... 74
19-2. bra. Csatolt adatok frisstse....................................................................................................... 75

1.

Bevezet

Felttelezett elismeretek. Irodai programcsomagok a mindennapi munkban.


manulis munkt kivltani automatizmussal?

Mikor rdemes a

Jelen tanknyv clja ketts. Egyrszt halad szint felhasznli ismeretek kvn tadni az irodai
programcsomagok (szvegszerkeszt, tblzatkezel, prezentciszerkeszt) hasznlatban, klns
tekintettel a tblzatkezelre. Msrszt bevezetst kvn nyjtani e programok automatizlsba az
ltaluk felknlt (makr-) nyelven val programozsukkal. A trgyalt tananyag ennek megfelelen
kszsg szint gyakorlati ismereteket nyjt egyszer Office programozsi feladatok kivitelezsre Visual
Basic nyelven. Az olvasrl felttelezi, hogy kisebb feladatok elvgzsre mr hasznlta az Excel, Word
programokat, s hogy programozsi alapismeretekkel is rendelkezik.
A tanknyvek azonban nem clja rszletes, mindenre kiterjed ismeretek tadni a trgyalt programokrl
vagy akr magrl a Basic nyelvrl sem. St, a Basic programnyelvrl s az Office alkalmazsok
programozsi felletrl a lehet legkevesebb sz esik. A cl az, hogy egy olyan, kevs elembl ll
eszkzkszletet sajttsunk el, amivel sok gyakorlati feladat megoldhat. Valamint, hogy megtanuljuk,
hogyan tudjuk a kis fegyvertrunkat kls segtsg nlkl magunk is bvteni.
Ha gyakran kell dolgozunk egy eszkzzel, akkor rdemes energit sznni arra, hogy elsajttsuk az eszkz
hasznlatnak minden csinyjt-binjt. A befektetett energia hossz tvon megtrl. Az irodai
programok esetn a gyakran ismtld manulis munkt kivlthatjuk egy jl megrt makrval, ami a
feladatot gyorsan s hibamentesen el tudja vgezni. rdemes-e azonban belefogni egy makr
leprogramozsnak, amikor a makr megrsa tbb idt vesz ignybe, mint a feladat kzi elvgzse?
Paradoxonnak tnhet, de ha nem sokkal lassabb az automatikus feladatmegolds leprogramozsa, mg
akkor is rdemes azt vlasztanunk. Egyrszt az automatikus megolds megrsbl tanulunk, a
kvetkez hasonl programozsi feladatnak mr nagyobb rutinnal fogunk nekikezdeni, gy j esllyel azt
hamarabb fogjuk befejezni. Teht ha mostani feladatot gyorsabb manulisan elvgeznnk, hossz tvon
itt is nyernk az automatikus megolds elksztsvel. Tovbb mg a kzi feladatmegolds szinte
mindig monoton, unalmas munkt jelent, amiben frusztrcit okoz, mert knny hibzni benne. Ezzel
szemben egy, nem megoldhatatlanul nehz programozsi feladat kellemes szellemi kihvst jelent s a
sikeres megolds remlhetleg jl es sikerlmnyt okoz.
6

A tanknyv ltalnosabb clja teht, hogy az olvas az anyag elsajttsa sorn rutinra tegyen szert az
algoritmikus gondolkodst ignyl problmamegoldsban.

2.

Szakdolgozat ksztse Wordben

Stlusok. brk, tblzatok (beilleszts, kpalrsok, brk hivatkozsa a szvegben). Tartalom- s


irodalomjegyzk ksztse
Noha a Word dokumentumszerkesztvel gyorsan, klnsebb elismeretek nlkl elkszthetnk jl
kinz pr oldalas mveket, egy nagyobb llegzetvtel dokumentum megrsa sorn rdemes
betartani nhny szerkesztsi elvet s tudatosan hasznlni a Word egyes funkciit.
Az egyik ilyen elv a stlusok hasznlata. Ahelyett hogy a szveget kzvetlenl formznnk meg,
stlusokon keresztl lltjuk be a dokumentum kinzett. Teht a dokumentum ksztse sorn egy
szvegrsznek csak a logikai struktrban elfoglalt helyt adjuk meg, pldul azt, hogy cmsor-e vagy a
norml folyszveghez tartozik-e, s nem azt, hogy milyen bettpussal s betmrettel jelenjen meg.
Ennek az elvnek az egyik elnye, hogy a dokumentum rsa sorn knnyebben tudunk annak tartalmra
koncentrlni, s a formzs nem vonja el figyelmnket a tartalom ellltstl. Msrszrl knnyebb
egysgesen kinz dokumentumok rni, mivel a klalakot csak a stlusok szabjk meg. Harmadrszt
pedig sokkal knnyebb a dokumentum kinzett utlag mdostani: tegyk fel, hogy a mondaton belli
kiemelsre flkvr bettpust hasznltuk s ezt szeretnnk lecserlni dltre. Az sszes kiemels cserje
rendkvl idignyes lehet, ha a szveg bettpust kzvetlenl vltoztattuk meg s a flkvr
bettpussal a szvegkzi kiemelsen kvl mst is jelltnk. Ezzel szemben egyszeren csak a kiemels
nev stlus bettpust kell egyelten egyszer mdostani, ha elzetesen ezt a stlust hasznltuk a
szvegkzi kiemelsekre.
Ha nem vagyunk hozzszokva, hogy a kzvetlen formzs helyett csak a stlusokat hasznljuk, akkor
rdemes a Korrektra szalag Vdelem ikonjn keresztl bekapcsolni a Formzs s mdosts
korltozsa funkcit.
Szakdolgozatnl s ms hosszabb szakmai szvegnl elvrt, hogy a mben szerepl brk (s tblzatok)
sorszmozottak legyenek, a folyszvegben ezzel a sorszmmal kell hivatkozni az brkra. Az brt s a
hozztartoz kpalrst gy rdemes elkszteni, hogy egy lelkes olvas pusztn az bra
tanulmnyozsa s a kpalrs elolvassa utn megrtse az brt, illetve hogy rtelmes
7

kvetkeztetseket tudjon levonni. Ennek ellenre a folyszvegben is szksges elemezni az brt, fel
kell hvni az olvas figyelmt az brn lthat fontosabb rszletekre.
Wordben kpet a Beszrs szalag brk csoportjnak Kp ikonjn keresztl tudunk beszrni. Ezekutn a
beszrt kp felugr menjt jobbklikkel tudjuk elrni, ahol a kpalrs megadsra van lehetsgnk.
Ahogy az a 2-1. brn is ltszik, ezen a ponton nmi nehzsgbe tkzhetnk, ha az elsdleges
dokumentumnyelv nem magyar. Ha van r lehetsgnk, akkor a Start men, Programok, Microsoft
Office, Microsoft Office-eszkzk, Microsoft Office Nyelvi belltsok tvonalon keresztl tudjuk
elindtani azt a programot, amivel az elsdleges dokumentumnyelvet be lehet lltani. Mindenesetre azt
szeretnnk, hogy gy vagy gy, de a "Figure 1" helyett "1. bra" szerepeljen a kpalrs elejn. Ennek
legegyszerbb mdja, ha a feliratot kihagyjuk a kpalrsbl s az bra sorszma utn kzzel rjuk oda
azt, hogy "bra". Itt ami sokakat megzavar az az, hogy a "felirat" sz nem a teljes kpalrst jelenti,
teht nem azt, pldul azt hogy "2-1. bra. Kpalrs beszrsa angol nyelv krnyezetben.". A
"felirat" ennl az ablaknl csak a sorszmozott elem kategrijnak nevt jelenti, azaz jelen esetben a
"Figure"-t.

2-1. bra. Kpalrs beszrsa angol nyelv krnyezetben.

A Hivatkozs szalag Feliratok csoportjnak Kereszthivatkozsok ikonjval tudunk beszrni a


folyszvegbl egy hivatkozst egy brra. A felugr ablakban a hivatkozs tpusnl tudjuk kivlasztani,
azaz azt, hogy melyik feliratcsoportbl szeretnnk kivlasztani azt az elemet, amihez a hivatkozst be
kvnjuk szrni. Azrt is volt szerencss kihagyni a feliratot a kpalrsbl, mert most amikor a
8

szvegbl hivatkozunk egy brra a Csak cmke s szm1 tpus beszrsakor csak a sorszmot szrja
be neknk a Word, gy tbbflekppen tudjuk a hivatkozst mondatba helyezni, teht az 1. bra azt
mutatja... helyett rhatjuk pldul azt, hogy az 1. brrl leolvashat.
Mi rtelme automatikusan generlt sorszmokat hasznlni s a folyszvegben az brkra ezekkel a
sorszmokkal hivatkozni? Hosszabb dokumentum rsa sorn elfordulhat, hogy utlag szrunk be egy
brt, vagy hogy megvltoztatjuk az brk sorrendjt. Ekkor manulisan frissteni az brasorszmokat s
brahivatkozsokat nagyon idignyes s unalmas munka, aminek sorn knny hibt vteni s pldul
kt darab 5. brt hagyni a dokumentumban. Automatikusan generlt sorszmok esetn azonban
tovbbi krltekintst ignyel, hogy a hatrozott nvel hasznlatt elkerljk a hivatkozott brk
sorszma eltt, mert ha a sorszm megvltozik, akkor esetleg a hatrozott nvelt is meg kell
vltoztatnunk.
Ha egy bra az oldal aljra kerl, akkor knnyen elfordulhat, hogy az brhoz tartoz kpalrs mr a
kvetkez oldal tetejre csszik t, ami az olvas szmra nagyon zavar tud lenni. Az bra s a hozz
tartoz alrs sztvlasztst ktflekppen is megakadlyozhatjuk. Az egyik lehetsg az, hogy az
brt az alrsval egytt egy, egyetlen cellbl ll tblzatba helyezzk el s a tblzat
tulajdonsgainl megtiltjuk, hogy oldaltrs lehessen egy soron bell. Ezt a Tblzat tulajdonsgai ablak
Sor flnek Oldaltrs a soron bell is lehet opci kikapcsolsval rhetjk el. A msik, taln
knyelmesebb lehetsg az az, hogy ltrehozunk egy bra nev stlust mondjuk a norml stlusbl
szrmaztatva, ahol is a Formtum, Bekezds belltsnl bekapcsoljuk az "Egytt a kvetkezvel"
opcit.
Azrt is hasznos a dokumentum logikai struktrjt pontosan kvet stlusokat hasznlni, mert ebben az
esetben a knnyedn tudunk tartalomjegyzket ltrehozni. A Hivatkozsok szalag Tartalomjegyzk
csoportjnak Tartalom ikonjval tudunk a dokumentumbl generlt tartalomjegyzket beszrni.
Alaprtelmezsknt a cmsor stlusokat felhasznlva jn ltre a tartalomjegyzk, de ezt szksg esetn
testreszabhatjuk.

1 rdemes megfigyelni, hogy ugyanarra a fogalomra a Word sajnos hrom klnbz kifejezst hasznl:
felrat, cmke s hivatkozstpus.
9

Ha nem sajt eredmnyeinkrl runk egy szakdolgozatban, akkor meg kell adnunk az adott rszhez
felhasznlt forrsmunka rszleteit. Ennek tudomnyterletenknt eltr szoksai vannak. A Word a
legtbb idzsi stlushoz knyelmes keretrendszert biztost. A Hivatkozs szalag Idzetek s
irodalomjegyzk csoportja nyjt ehhez tmogatst. A funkcik az brahivatkozsok ismeretben
knnyedn elsajtthatak.

3.

Formulk hasznlata Excelben

Relatv, abszolt cmzs. Munkalap-fggvnyek: szum, ha, fkeres, max, hol.van, index. Kpletvizsglat:
eldk, utdok feltrkpezse
Az Excel program elssorban adatok strukturlt trolsra s feldolgozsra hasznlhat. Az adatbevitel
remlhetleg kellen intuitv. Ebben a fejezetben nhny egyszer adatfeldolgozsra hasznlhat
formulval s munkalap-fggvnnyel ismerkedhetnk meg. Valamint pr adatbevitelt megknnyt
funkcival.
Pr vvel ezeltt a vilg leghasznosabb Excel munkafzete cmmel terjedt egy kremail, amiben a 3-1.
brn lthat munkalap volt. Ebben a fejezetben ennek a munkalapnak a reproduklsn keresztl
ismerhetnk meg pr hasznos Excel-funkcit.

10

3-1. bra. Kpernykp a vralkoholszint-kiszmt munkalaprl.

Vegyk szre, hogy a 3-1. bra bal fels sarkban szerepel a buli kezdetnek idpontja s a bal oldali
"id" oszlopban ehhez a kezdsi idponthoz igaztva lthatak a nap ri. Hogyan tudjuk az id oszlopot
gy ltrehozni, hogy ha a munkalap felhasznlja megvltoztatja a kezdsi idpontot, akkor
automatikusan az id oszlop is megvltozzon?
Mieltt a fenti krdsre vlaszt kapnnk, rdemes tudni, hogy a munkalap celli nem csak szmokat s
szvegeket tartalmazhatnak, hanem gynevezett formulkat is vagy ms nven kpleteket is. Ezeknek a
formulknak az rtke egy szmtsi mvelet eredmnyekppen ll el. Tipikusan egy ilyen formula ms
cellk tartalmra hivatkozik, az ott tallhat rtkekbl lltja el a formult tartalmaz cella rtkt. A
3-2. brn, az A5 cellban egy formula rtke lthat; maga a formula a jobb fels sorokbl olvashat ki.
Lthat, hogy a formula egyenlsgjellel van bevezetve, a formula pedig egy munkalapfggvnybl ll.
11

Az angol SUM, a magyar nyelv Excelben a SZUM fggvny a paramterl kapott tartomny cellinak
sszegt szmolja ki.

3-2. bra. Egy egyszer Szum formula

Az az rdekes, hogy ha az A5 cellt a vglapra helyezzk, mondjuk, a Control-C gyorsbillentyvel s a B5


cellnl beillesztjk a vglap tartalmt (Control-V), akkor formula ugyan tmsoldik, de a szumma
fggvny argumentuma A1:A4-rl B1:B4-re vltozik. Illetve azt is mondhatnnk, hogy a formulban
szerepl tartomny a formulhoz kpesti (relatv) pozcija nem vltozik meg. A vglapra helyezs
helyett egybknt az aktv A5-s cella bal als sarkt megfogva s jobbra hzva is lemsolhattuk volna a
formult a B5-s cellba.
Nzznk egy msik pldt! A 3-3. brn kt munkalap ltszik. Mindkett B2-es celljban lv formula
az A2-es s B1-es cella rtkt szorozza ssze. Az eredmny mindkt esetben 10. Azonban ha a
formult lemsoljuk a B3, B4, B5 cellkba, akkor B4 s B5 cellk esetn eltr eredmnyeket kapunk a
kt munkalap esetn. Ennek az az oka, hogy az egyik esetben a formula a B1-es cellra B$1-knt
hivatkozik, emiatt a cella msolsakor a cm sor rsze vltozatlan marad abszolt rtelemben. Teht ha a
cella cmnek sor s/vagy sorrsze el dollr jelent tesznk, akkor a cella msolsakor a cm a
munkalaphoz kpest nem fog megvltozni. Ha nincs dollr jel, akkor pedig a formulhoz kpest nem fog
megvltozni. A 3-3. brn lthat plda jobboldali rszn a szorzatok els tnyezje relatv rtelemben
nem vltozik, hiszen mindig a formultl balra lv cellra hivatkozik, mg a szorzat msodik tnyezje
abszolt rtelemben nem vltozik, hiszen mindig a B oszlop els sorra hivatkozik.

12

3-3. bra. Relatv s abszolt cmzs. A knnyebb rthetsg kedvrt a B oszlop mellett a B oszlopban lv cella formulja
tallhat.

Visszatrve teht a "vilg leghasznosabb" munkalapjra, tegyk fel, hogy az F2 cella tartalmazza a
felhasznl ltal megvltoztathat kezdsi idpontot. Els prblkozsunk sorn a B7 cellba olyan
formult runk, ami egyszeren a kezdsi idpontra hivatkozik, az alatta lv cellban pedig olyan
formult rhatnnk, ami a felette lv rtkhez add hozz egyet (3-4. bra). Ezzel a megkzeltssel az a
baj, hogy nem veszi figyelembe, hogy egy nap csak 24 rbl ll.

3-4. bra. Els ksrlet a buli rinak felsorolsra. Az F2 cella tartalmazza a kezdsi idpontot.

3-5. bra. A buli rinak helyes felsorolsa.

13

Els prblkozsunk hibjt egy kicsit sszetettebb formula megrsval tudjuk korriglni. A "HA"
munkalapfggvny hrom argumentumot vr, az els egy feltteles kifejezs, a msodik a fggvny
rtke abban az esetben, ha a feltteles kifejezs igaz lesz, a harmadik argumentum pedig a fggvny
rtke abban az esetben, ha a feltteles kifejezs hamis lesz. Msodik prblkozsunkban (3-5. bra)
lthat, hogy ha az elz cella rtke nagyobb vagy egyenl volt 23-nl, akkor a formulk rtke 0 lesz,
egybknt pedig egy sorral feljebb lv cellnl eggyel nagyobb.
Haladva tovbb a munkalap ellltsval, a 3-1. brn lthat, hogy az ital tpusa melletti oszlopban az
adott rban fogyasztott italok sszes alkoholtartalma tallhat. Hogyan lehet ezt kiszmtani? Ha
tudjuk, hogy egy adott tpus ital (piafajta) hny gramm alkoholt tartalmaz, akkor ennek s az adott
rban bevitt mennyisgnek a szorzataknt elll a keresett rtk. A nehzsget itt az jelenti, hogy a
munkalap felhasznlja csak azt adja meg, hogy az adott rban mit fogyasztott, azt nem, hogy ennek a
tpus italnak mi az alkohol tartalma. Szerencsre azonban ez a J21 cellnl kezdd tblzatbl
kikereshet az FKERES (angolul VFIND) munkalapfggvny segtsgvel. A fggvnynek ngy
argumentuma van: az els tartalmazza azt az rtket, amit keresni szeretnnk a msodik
argumentumban megadott tblzat els oszlopban, a harmadik argumentum azt adja meg, hogy
keresett rtk (esetnkben a D7 cellban tallhat "Sr (veg)" szveghez) sorban hnyadik cella
rtke legyen az FKERES fggvny rtke. Ha pedig az utols argumentum hamis, akkor pontos egyezs
szksges az els oszlopban trtn keress sorn. Ezen a ponton azonban rdemes a beptett Sug
hasznlatt elsajttani: nzzk meg mit r a Sg az FKERES mkdsrl, ha annak a negyedik
argumentuma nem hamis.

3-6. bra. Plda az FKERES munkalapfggvny hasznlatra.

14

A G oszlopban nem az adott rban a szervezetbe bevitt alkohol mennyisge tallhat, hanem az sszes
szervezetben lv alkohol mennyisge, teht az is, amit a felhasznl korbban fogyasztott s a
szervezete mg nem bontott le. Hasznljuk azt az egyszer modellt, hogy a lebontsi sebessg 0,1
gramm rnknt s testsly-kilogrammonknt. Felttelezve, hogy a felhasznl a buli eltt nem
fogyasztott alkoholt, az els ra vgn a szervezetben lv sszalkohol megegyezik az els rban
bevitt mennyisggel, teht G7 formulja "=F7". A ksbbi rkban az adott rban bevitt mennyisghez
kell hozzadni a korbbi rbl megmaradt (el nem bontott) mennyisget. gy teht pldul G8 cella
formulja "=F8+MAX(0, G7-0.1 * $F$3)", ha felttelezznk, hogy a felhasznl testslyt az F3-as
cellban adta meg.
rdemes megfigyelni, hogy a MAX munkalapfggvny segtsgvel
megakadlyoztuk, hogy a szervezetben bent lv alkoholmennyisgnl tbbet bontson le a szervezet.
Tovbb abszolt cmzst hasznltunk a testslyra val hivatkozskor azrt, hogy a formula msols
utn is helyes maradjon.
Ahhoz, hogy megllaptsuk a kijzanodsi, illetve a rtltsi idt a HOL.VAN s az INDEX munkalapfggvnyekre van szksgnk. A HOL.VAN egy megadott tartomnyban megkeres egy rtket s annak
a sorszmt adja vissza. Az INDEX segtsgvel egy adott tartomny (tmb) elemeit lehet megcmezni.
A pontos hasznlatrt megint csak rdemes a Sgt ttanulmnyozni, mert fontos, hogy a Sg helyes
hasznlatt is elsajttsuk. A kijzanodsi id megtallsnak els lpseknt (3-7. bra) keressk meg
azt a sort a munkafzetben, amihez tartoz, a felhasznl szervezetben lv vralkoholszint nulla lesz.
Ezt a =HOL.VAN(0, G7:G20, 0) formulval tehetjk meg. Az brn lthat pldban a formula rtke 11
lesz, ami azt jelenti, hogy a G7:G20 tartomny 11. cellja nulla elszr. A tartomny 11. cellja a G17-es
cella. Msodik lpsben az rdekel minket, hogy a G17-es cella a buli hnyadik rjt jelli, teht az,
hogy a B7:B20-as tartomny 11. celljnak mi az rtke. Ezt az =INDEX(B7:B20, 11) formulval tudjuk
megkapni. ltalnosabb lesz a megoldsunk, ha a msodik formula az els eredmnyt hasznlja fel
ahogy az a 3-7. brn is ltszik. Azonban semmi nem akadlyoz meg minket abban, hogy magt a
HOL.VAN fggvnyt az INDEX-be gyazzuk gy: " =INDEX(B7:B20, HOL.VAN(0,G7:G20,0))". Jl lehet, az
ilyen egymsba gyazsok sorn nem szksges a rszeredmnyeket segdcellban letrolni (mint
pldul a HOL.VAN rtkt G23-ba), a nagyon hossz s sszetett formulkat inkbb rdemesebb tbb
rszre bontani. A tbb rszre bontott formulk jobban tlthat kdot eredmnyeznek, amiben szksg
esetn knnyebb hibkat keresni.

15

3-7. bra. Plda a HOL.VAN s az INDEX munkalapfggvnyek hasznlatra

4.

rlapok ksztse Excelben

Adatrvnyessg-ellenrzs. rlap-vezrlelemek hasznlata, cellhoz val ktsk. Lapvdelem,


munkalap zrolsa. Grafikonok.
A 3-1. brn lthat, reproduklni kvnt munkalapon minden rban egy legrdl menben
megadhatja a felhasznl, hogy milyen tpus italt fogyasztott. Ezt tbbflekppen rhetjk el, de
legknyelmesebb mdja az ilyen legrdl menbl elrhet vlasztra az adatrvnyessgellenrzsnek hasznlata (4-1. bra). Ha a D oszlopban adhat meg az adott rban elfogyasztott ital
tpusa, akkor azokat a cellkat elzetesen kivlasztva az Adatok szalagon az Adateszkzk csoport
rvnyests ikonjn keresztl tudjuk megadni, hogy az adott cellkba milyen rtkek fordulhatnak el.
Neknk most csak a listban felsorolt rvnyessgi felttelt kell hasznlni, de rdemes a tbbi felttelt is
ttanulmnyozni. A lista forrsaknt adjuk meg a J22:J27 tartomnyt, mert ott vannak az italok
felsorolva s mr kszen is vagyunk. rdemes szrevenni, hogy a forrs tartomnya abszolt cmzssel
kerlt bejegyzsre, gy a D7 cella msolsa sorn rvnyestsi felttel is helyesen fog lemsoldni.

16

4-1. bra. Adatrvnyessg ellenrzsnek belltsi lpsei.

A 3-1. brn a buli kezdett, a felhasznl testslyt s az adott rban elfogyasztott italok mennyisgt
csszkk vagy ms nven grgetsvok segtsgvel is meg lehet adni. Ezek a csszkk j pldk az
gynevezett rlap-vezrlelemekre. Ilyen vezrlelemeket csak akkor tudunk beszrni, ha eltte az
Excelben bekapcsoljuk a Fejleszteszkzk szalagot. Nyomjuk meg a bal fels sarokban lv Office
gombot, majd "az Excel belltsai" utn a kapcsoljuk be a "Fejleszteszkzk lap megjelentse a
szalagon" opcit. Ezen az jonnan megjelent szalagon Beszrs ikon megnyomsa utn kivlasztatjuk a
beszrni kvnt vezrlelemet. Akr csuszkt, jellngyzetet, vlasztgombot, vagy brmilyen ms
vezrlelemet hasznlunk egy dolog kzs a hasznlatunkban: meg kell adnunk, hogy a vezrlelem mit
vezrel, azaz egy csatolst kell ltrehoznunk egy cella s a vezrlelem kztt. A vezrlelem jobbklikkel
elrhet felugr menjnek Vezrlelem formzsa menpontjval tudjuk a csatolst belltani. A
csatols belltsa utn a vezrlelem vltoztatsval egytt vltozik a csatolt cella rtke, illetve a cella
vltoztatsval megvltozik a vezrlelem llapota is.

17

Ha az ltalunk sszelltott munkafzetet msoknak is oda kvnjuk adni, s szeretnnk, hogy a


munkalapot csak az ltalunk elzetesen meghatrozott helyen mdostsk, akkor rdemes a
lapvdelmet hasznlnunk. A lapvdelmet a Korrektra szalag Vltoztatsok csoportjbl tudjuk
bekapcsolni. A lapvdelmi belltsokat a 4-2. brn lthatjuk. Ha bekapcsoljuk a lapvdelmet, akkor az
alaprtelmezett belltsok mellett a zrolt cellk tartalmt nem tudjuk mdostani. Viszont eredetileg
minden cella zrolt. Egy cella vagy egy tartomny zrolsi tulajdonsgt a kijellt tartomny jobbklikkel
elhozhat krnyezetfgg menjbl llthatjuk be (4-3. bra).

4-2. bra. Lapvdelem belltsi lehetsgei

A lapvdelem s a megfelel adatrvnyessg-ellenrzs egyttes hasznlata nagyon elnys tud lenni.


A kt funkci egyttes hasznlatval olyan munkafzeteket tudunk kialaktani, amivel pontosan meg
tudjuk hatrozni, hogy milyen cellba milyen adatokat rhatnak be a munkafzetnk felhasznli.

18

4-3. bra. A zrols tulajdonsg mdostsa

A felhasznl vralkoholszintjnek idbeli vltozst egy grafikonon is nyomon kvethetjk. Grafikon


beillesztsre a Beszrs szalagon van lehetsgnk. A grafikon beillesztse ugyan nem bonyolult, de
rdemes odafigyelni, hogy az adatsor idtengelyn a tnyleges idrtkeket helyesen lltsuk be.

5.

Krlevl

Krlevl ksztse Excel munkalapon trolt forrsadatokbl. Egyni adatmezk hasznlata


A Word dokumentumszerkesztvel lehetsgnk van klasszikus rtelemben vett krlevelek rsra,
azonban a Word krlevl-ksztsi kpessgeire rdemesebb egy kicsit ltalnosabban nzni. gy
szmos, unalmasan ismtld feladat elvgzst tudjuk majd elkerlni. A krlevl funkcit nem csak
levelek elksztsre hasznlhatjuk, hanem tetszleges hasonl tartalm dokumentumhalmaz
legenerlsra is. Krlevl ksztse sorn egy dokumentumsablon segtsgvel llthatunk el tbb
dokumentumot gy, hogy a sablonban lv vltoz adatmezk egy adatforrsbl helyettestdnek be.
Maga az adatforrs lehet egy tvoli adatbzis lekrdezs eredmnye is, de mi leggyakrabban egy Excel
munkafzet munkalapjt fogjuk hasznlni.
19

Az 5-1. bra egy egyszer pldt mutat be. Fontos, hogy a forrsadatoknl az Excel tblzatban egy sor
egy dokumentum vltoz adatait tartalmazza, azaz egy sor celli egy-egy adatmez-rtket
tartalmazzanak. Tovbb az adattblzatnak kell, hogy legyen fejlce, azaz az els sor az adatmezk
neveit kell, hogy tartalmazza. A pldban teht az A oszlop a feltallkat tartalmazza, a B oszlop pedig a
feltall tallmnynak nevt. A dokumentumsablonban a dokumentumonknt eltr rszt az
adatmezk nevei adjk meg.

5-1. bra. Krlevl ltrehozsa egy dokumentumsablon s egy Excel tblzat segtsgvel

Legegyszerbben a Levelezs szalag "Krlevlkszts indtsa" ikonjra val klikkelssel tudunk


nekifogni a fenti plda ellltsnak. A ikonra val klikkels utn felugr men "Lpsenknti
krlevlvarzsl" menelemt kell kivlasztanunk. Els lpsknt a krlevl tpust kell megadni. Ha
ltalnos Word dokumentumot szeretnnk ellltani, akkor a levl tpust rdemes vlasztani. A
msodik lpsben a dokumentumsablont lehet megadni. Ha nincs elksztett anyagunk, akkor
nyugodtan adjuk meg az (res) aktulis dokumentumot, mert lesz mg lehetsgnk a sablonknt
szolgl aktulis dokumentum szerkesztsre. A kvetkez, harmadik lpsben a cmzettlistt kell
megadnunk. Itt adjuk meg a fenti szablyok szerint ltrehozott Excel fjlt. A negyedik lpsben a
sablont tudjuk szerkeszteni. Ebben a lpsben lehet a sablonba az adatmezket beszrni. A tovbbi
elemek menpontnl tudjuk kivlasztani azt az adatmezt, amit a kurzor aktulis pozcijhoz be
kvnunk szrni. Abban az esetben, ha az elre definilt mezneveket szeretnnk hasznlni, de a sajt
adatbzisunkban ms oszlopneveket hasznltunk, akkor jl jhet a "Adatmezk beszrsa" ablak aljn
20

tallhat "Mezk egyeztetse" nyomgomb, ami segtsgvel az adatbzisban tallhat s a


krlevlkszt ltal hasznlt mezneveket tudunk megfeleltetni egymsnak. Az tdik lpkor a
dokumentumok a sablon alapjn legenerldnak; itt van lehetsgnk megnzni a
dokumentumgenerls eredmnyt. Amennyiben nincs mdostsra szksg, akkor a varzsl utols,
hatodik pontjval vglegesthetjk a krlevl ksztst az egyests befejezsvel.
Tipikus irodai munkafolyamatok sorn a krlevlksztsi funkcit hasznlhatjuk pldul alkalmazotti
szerzdsek ksztsre is. ltalban ezek a szerzdsek csak az alkalmazottak adatiban trnek el,
ezeket ezrt sszegyjthetjk egyetlen Excel tblzatban s egy elre elksztett szerzdssablon
segtsgvel elkszthetjk egy j alkalmazott szerzdst. Ez azrt is elnysebb egy korbban
elmetett szerzds mdostsnl, mert a mdosts sorn knnyen elfeledkezhetnk egy mez
cserjrl, vagy mert az alkalmazott nevt az Excel tblzatban csak egyszer kell megadni, a ksz
szerzdsben pedig ltalban sokszor elfordul.

6.

Kimutatsok

Kimutats ksztse (pivot table, chart), frisstse. Forrsadatok helyes megvlasztsa. Szrsi felttelek.
Szrmazkos rtkek szmtsa. Megjelents testreszabsa.
Excel munkalapokon klnbz struktrkban trolhatunk adatokat. Fontos, hogy gy vlasszuk meg
adatok struktrjt, elrendezst, hogy az knnyen tlthat legyen, knnyen bvthet legyen, de taln
legalbb ilyen fontos, hogy az adatokbl knnyen tudjunk kvetkeztetseket levonni.
Az
adatelemzsnek gyors s knyelmes mdja az gynevezett kimutats vagy ms nven pivot table
ksztse.
Ennek segtsgvel ugyanabbl az adathalmazbl klnbz szempontok szerinti
kimutatsokat tudunk egyszeren kszteni gy, hogy klnbz krdseket tudunk ugyannak az
adathalmaznak a segtsgvel megvlaszolni.
Lssunk egy pldt! A 6-1. brn egy kis tblzatot ltunk, amelynek egy sora azt tartalmazza, hogy az
adott keresztnevet az adott vben hny jszltt kapta. Tegyk fel, hogy a tblzatunk 2008 s 2010
kztt az sszes jszlttrl tartalmaz adatokat. Klnsen fontos a kimutatsok ksztsekor, hogy a
tblzat fejlces legyen, azaz az els sora tartalmazza az oszlopok neveit.

21

6-1. bra. Nvadatsok gyakorisga (minta)

Az els krds, amire vlaszt keresnk ekkor az, hogy cskkent-e az jszlttek szma az vek sorn. Az
eredeti tblzatunkbl ezt nem knny megllaptani, mert pldul nem lehet egyszeren az adatokat
az "jszltt" vagy az "v" oszlop szerint rendezni, hiszen az egy vben szletettek adatai tbb sorban
vannak sztszrva. A kimutats ksztshez jelljk ki az A1-es cellt s a Beszrs szalagon a
Tblzatok csoportban klikkeljnk a Kimutats ikonra, ekkor meg tudjuk adni forrsadat tblzatt
illetve tartomnyt. Mivel azonban mi mr elzetesen kijelltk az A1-es cellt, ezrt jelen esetben
automatikusan megtrtnt forrstartomny belltsa. gy haladhatunk tovbb az OK gombbal, aminek
eredmnyeknt a 6-2. brn lthat res kimutats fog ltrejnni egy j munkalapon. Figyeljk meg a
jobb oldalon tallhat Kimutats mezlista ablakt! Fell lthatak a 6-1. bra tblzathoz tartoz
oszlopnevek. Ezeket a mezneveket az egrrel ngy klnbz ngyzetbe hzhatjuk bele: a
jelentsszrbe, az oszlopcmkkbe, a sorcmkkbe s az rtkekbe.

22

6-2. bra. res kimutats-szerkeszt

A 6-3. brn az lthat, amikor a sorcmkk kztt az "v" mez szerepel az rtkek kztt pedig az
"jszltt" mez. Ezzel tulajdonkppen meg is vlaszoltuk a krds: az adatok szerint egyre kevesebb
gyermek szletik. Azonban ne rohanjuk tovbb. Hogyan is jutottuk erre az eredmnyre? A kimutatssal
a forrsadatok egy tmrebb vltozatt lltottuk el, amibl a krdse adott vlasz knnyen
leolvashat volt. Az "v" sorcmknt val megadsval azt rtk el, hogy a forrsadatban elfordul
minden klnbz v rtknek klnbz sora lesz a kimutatsban. De mivel egy vhez tbb sor is
tartozik, ezrt az rtk doboz hatrozza meg, hogy az azonos vhez tartoz sorokat hogyan vonjuk ssze
egyetlen sorr a kimutatsban. Pldul 2008-ban 966 Zsfia szletett s 893 Petra, teht a 6-1. bra
tblzatban kt olyan sor is van, amit valahogy a 6-3. bra kimutatsnak 4. sorba kne
belegymszlni. Mivel azonban az rk dobozban "sszeg/jszltt" szerepel ezrt a kimutats B4-es
celljban 966+893 azaz 1859 lesz.
23

6-3. bra. jszlttek szma venknti bontsban

A msodik krdsknt arra vagyunk kvncsiak, hogy az adott idszakban sszesen hny gyermek kapta a
Petra illetve a Zsfia keresztneveket. Ha most a vltozatossg kedvrt a sorcmkket resen hagyjuk s
az oszlopcmkk kz a "nv" mezt vesszk fel, valamint az rtk dobozban tovbbra is az
"sszeg/jszltt"-et tesszk, akkor a 6-4. brn lthat kimutatst kapjuk. Az eredmnyt mr
knnyebben meg tudjuk magyarzni: a kimutats 4. sora a lehetsges oszlopcmkket tartalmazza, teht
forrsadatokban elfordul keresztneveket. Mivel Petra a harmadik, tdik s a hetedik sorban fordul
el, ezrt ezek a sorok vannak egyttesen brzolva a B5 cellban, pontosabban az "jszltt" rtkek
sszege szerepel, mert ezt adtuk meg az rtk dobozban.

6-4. bra. Keresztnevek npszersge a 2008-2010-es idszakban

sszefoglalsknt elmondhatjuk, hogy egy kimutats ksztsekor az ltalunk megadott felttelekre


illeszked sorokat kereshetjk ki, s ezeken a sorokon szmtsokat hajthatunk vgre, hogy egyttesen
lehessen brzolni az illeszked sorokat.
A kimutats-kszts hasznossgra most nzznk egy fokkal sszetettebb pldt. A 6-5. bra egy
kpzeletbeli kisvllalkozs egyszer knyvelst mutatja be. Az utaz gynk alkalmazottak szmlinak
felel meg egy-egy sor a tblzatban. A nv oszlop az gynk nevt tartalmazza; a hnap oszlop azt, hogy
a szmla az v hnyadik hnapjra vonatkozik; a tpus azt mondja meg, hogy a szmla milyen f
kategriba sorolhat; az rtk oszlop a szmla rtkt forintban; a vros a szmla killtsi helyt;
vgezetl a nap oszlop azt adja meg, hogy hotelszmla esetn hny napot tlttt az gynk az adott
hotelben. Mivel egy sor egy szmlnak felel meg, ezrt viszonylag knny a tblzatot karban tartani.
24

6-5. bra. Kikldetssel kapcsolatos mintaadatok

Els feladatunk legyen tpus szerint bontsban megadni, hogy ki mennyit klttt. A krds
megvlaszolhat egy olyan kimutatssal, aminl a sormezknl a "nv" szerepel, az oszlopmezknl a
"tpus", az rtkeknl pedig az "sszeg/rtk". Ez utbbinl a mezkd legrdl menjnl
rtkmez-belltsoknl van lehetsgnk megadni, hogy az oszlop- s sorrtkre illeszked sorokat a
kimutats ne megszmolja, hanem az rtkek sszegt kpezze.
Msodik feladatknt adjuk meg a havi tlagos tankolsra klttt sszeget, valamint az adott hnapban
az egy alkalommal kifizetett legdrgbb tankolst is. Mindezt gy, hogy az eredmny a havi tlagok
cskken sorrendjben legyen. Mivel ennl a feladatnl csak a benzinszmlk rdekelnek minket a
Jelentsszr dobozhoz adjuk hozz a tpus mezt s a kimutats tetejn lltsuk be a benzin szrsi
felttelt. Majd a sorcmkk kz hzzuk be a hnap meznevet. Ezek utn a havi tlagos tankolsra
klttt sszeget nem nehz megkapni, hiszen csak az rtk meznevet kell az rtkekhez hozzadni,
valamint a meznv legrdl menjben kell az rtkmez-belltsoknl az tlagot kikeresni. A
korbbi feladatoktl eltren most mg egy szrmaztatott mennyisgre is kvncsiak vagyunk: a havi
legdrgbb tankolsra is. Nincs ms dolgunk, mint megint hozzadni az rtk meznevet az rtkek
kz, most azonban az tlag helyett a maximum fggvnyt kell kivlasztanunk. Vgezetl a kimutats
sorcmkk celljnak legrdl menjben van lehetsgnk egyni rendezsi feltteleket megadni. Itt
a tovbbi rendezsi lehetsgek kztt tudjuk kivlasztani az tlag/rtk oszlopot.
Harmadik feladatknt nzzk meg, hogy Debrecenhez kpest szzalkosan mennyivel kltttek tbbet
telre Pcset s Szegeden. Nyilvn most is az elz feladathoz hasonlan rdemes a Jelentsszrbe a
25

tpust tenni, de most az telt kell kivlasztani. Tovbb az Oszlopcmkk kz tenni a vrost s az
rtknl az "sszeg/rtk"-et kell belltani. Az jdonsg a korbbi feladatokhoz kpest abbl addik,
hogy az eredmnyeket egy msik szrmaztatott mennyisghez kpest szeretnk brzolni. Ezt az
rtkmez-belltsok mdostsval tudjuk elrni: az rtkek megjelentse fln vlasszuk a
szzalkos eltrst, majd viszonytsi mezt lltsuk "vros"-ra s a viszonytsi ttelt "Debrecen"-re.
(Jelen feladatnl a sorcmkk hasznlata azrt nem j, mert viszonytsi mezket csak oszlopokhoz lehet
megadni.)
Vgezetl a kikldets hossznak fggvnyben adjuk meg az egy napra vettett szllsdj tlagos
rtkt. Ez a feladat azrt nehz, mert a kimutats ksztse sorn nincs lehetsgnk az egy napra
vettett szllsdjat kiszmolni. Ezrt az egyik lehetsgnk kszteni egy kimutatst, amiben a
kikldets hossznak fggvnyben megadjuk meg a szllsdjak tlagos rtkt, ezutn a kimutats
mellett ltrehozunk egy j oszlopot, amiben elosztjuk a szllsdj tlagos rtkt a kikldets hosszval.
A msik ltalnosabban hasznlhat megolds az, hogy a forrsadatokat bvtjk mg egy j G
oszloppal. A G oszlopba egy olyan formult runk, ami a sorhoz tartoz D/F rtket szmolja ki. Ezek
utn az j oszloppal a feladatot megold kimutats mr knnyen elkszthet. Ez a feladat arra volt
plda, hogy a kimutatsok ugyan nagyon sok mindenre hasznlhatak, mgis rdemes mindig
elgondolkozni, hogy az adott feladatunk megvlaszolshoz a forrsadatok megfelel alakra vannak-e
mr hozva.
Ebben a fejezetben a kimutats-kszts szmos lehetsgt vettk sorra, de nem trtnk ki az sszes
belltsi lehetsgre, ezrt rdemes a klnbz belltsi lehetsgeket egyszer vgigbogarszni,
htha egy ksbbi problma megoldsa sorn jl jn majd a megismert funkci.

7.

Tovbbi munkalap-fggvnyek

Darab, ha, nagy, tlag. Kpletek szerkesztse tbb lpcsben. A sg hasznlata.


Tegyk fel, hogy egy tantrgy oktatsa tizenhrom gyakorlatbl s egy gynevezett ellenrz mrsbl
ll. Flvvgi jegyet csak az kaphat, aki legalbb a gyakorlatok 70 szzalkt legalbb elgsges
osztlyzattal teljestette s tment a ktelez ellenrz mrsen is. Ezek utn a hallgat flves jegye a
kilenc legjobb rai gyakorlatra kapott jegy s az ellenrz mrsre kapott jegy kerektett tlaga, amiben
az ellenrz mrs jegye 50 szzalkos sllyal szerepel. A megoldand feladatunk kiszmolni egy osztly

26

illetve egy vfolyam hallgatinak flvvgi jegyt.


hasonlatosan vannak megadva.

A gyakorlatokra adott jegyek a 7-1. brhoz

7-1. bra. Mintaadatok a flvvgi jegy kiszmtshoz

Ez a feladat elsre bonyolultnak tnhet s majd ltni is fogjuk, hogy tnyleg igen sszetett formulkat
kell megalkotunk, azonban kisebb rszfeladatokra bontva a feladatot mindig knnyen rthet
lpsekben fogunk a clunkhoz kzelteni. Ez a problma-dekompozcis elv nem csak most, de
ltalnossgban is nagyon hasznos.
A feladat megoldsa eltt azonban tekintsk t pr munkalapfggvny hasznlatt, amik a
problmamegolds sorn hasznosak lesznek. A "DARAB" fggvny megszmolja, hogy az
argumentumban tadott tartomnyok hny darab szmot tartalmaznak. A "HA" munkalapfggvny
hrom argumentumot vr, az els egy feltteles kifejezs, a msodik a fggvny rtke abban az
esetben, ha a feltteles kifejezs igaz lesz, a harmadik argumentum pedig a fggvny rtke abban az
esetben, ha a feltteles kifejezs hamis lesz. A "NAGY" fggvny szintaxisa a kvetkez: NAGY(tmb, k),
visszatrsi rtke pedig a tmb (egy egydimenzis tartomny) k-adik legnagyobb eleme. Vgezetl az
"TLAG" munkalapfggvny az argumentumai tlagt szmolja ki.
Az elz bekezds lersa tlsgosan tmrnek tnhet. Ha annak alapjn nem lenne vilgos az egyik
vagy msik munkalapfggvny mkdse, nzznk utna a Sgban a rszletes lersnak. ltalban is
rdemes elsajttani a beptett Sg hasznlatt, mert egyrszt az a ksbbi munknk sorn mindig
kznl lesz, msrszt pedig nincs lehetsg s nem is rdemes minden munkalapfggvny mkdst
27

elre rszletesen elsajttani. Elegend, ha megtanuljuk, hogy hogyan tudjuk megkeresni az aktulis
feladatunk megoldshoz szksges munkalap-fggvnyeket, s hogy hogyan tudjuk ezen fggvnyek
pontos mkdst megrteni. Ahogy az a 7-2. bra fels rszn is lthat, a munkalap felet tallhat az
"fx" szimblum, amivel a Fggvny beszrsa ablakot tudjuk elhvni. A Fggvny beszrsa ablakban
egyrszt kategrik szerint tallzhatunk az elrhet fggvnyek kztt, vagy szveges keresssel
ksrelhetjk meg megtallni a hasznlni kvnt munkalap-fggvnynket. Ha az ablak kzepn tallhat
a listbl kivlasztunk egy elemet, pldul az brn lthat DARAB-ot, akkor az ablak aljn egy rvid
lerst kapunk a fggvny mkdsrl. Ez tbbnyire elegend akkor, ha mr hasznltuk korbban ezt a
munkalapfggvnyt, vagy tisztban vagyunk a mkdsvel, csak a szintaxisra nem emlksznk
pontosan. Ebben az esetben ez a tmr emlkeztet ltalban elegend, hogy helyesen tudjuk
hasznlni a fggvnyt. Ha azonban ez az emlkeztet mgsem elegend neknk, akkor az ablak bal als
sarkban lv linken keresztl tudunk rszletesebb lerst krni a kivlasztott fggvnyrl.
Mindezek utn trjnk vissza a fejezet feladatra. Apr lpsekben haladva szmoljuk ki a hallgatk
flvvgi jegyt. Elsre adjuk meg a P oszlopban, hogy egy hallgat hny gyakorlaton vett rszt. Ha egy
hallgat rszt vett egy gyakorlaton, akkor arra osztlyzatot kapott. Ha rosszul teljestett, akkor
elgtelent kapott, de mindenesetre kapott egy jegyet. gy ha megszmoljuk, hogy hny szmot
tartalmaz cella van a hallgat gyakorlati jegyeit tartalmaz tartomnyban, akkor megkaphatjuk, hogy az
illet hny gyakorlaton vett rszt. Teht P2 cella formulja legyen ez: "=DARAB(B2:N2)". A cella jobb
als sarkt lehzva pedig a teljes vfolyamra ki tudjuk terjeszteni a szmtsunkat.
Msodik rszfeladatknt a kvetkez, Q oszlopba adjuk meg, hogy a hallgatk az rk hny szzalkn
adottak le megoldst, azaz az rk hny szzalkn voltak jelen. Szerencsre most nem kell nullrl
indulnunk. A P oszlopban szerepel, hogy egy hallgat sszesen hny gyakorlaton vett rszt, ezt a szmot
kell csak elosztani a gyakorlatok szmval s megkapjuk a jelenlti arnyt, amit cellaformzssal
szzalkos alakban tudunk brzoltatni.

28

7-2. bra. Tjkozdsi lehetsgek a munkalapfggvnyekrl

Az R oszlopba adjuk meg, hogy a hallgatk teljestettk-e az ellenrz mrst. Az ellenrz mrst akkor
tejestettk, ha az arra kapott osztlyzatuk, ami az O oszlopban van eltrolva, legalbb kettes lett, teht
a HA fggvnnyel a kvetkez formult tudjuk felrni: =HA(O2>=2; "Igen", "Nem")
Az S oszlopba adjuk meg, mi a legjobb gyakorlati jegy, amit a hallgatk kaptak. Most egyszeren a MAX
munkalapfggvnyt kell hasznlnunk a gyakorlati jegyek tartomnyra, ahogy az a 7-3. brn is ltszik.

7-3. bra. Az els ngy rszfeladat megoldsa.

Kicsit nehezebb a helyeznk, ha nem a legjobb, hanem a msodik legjobb osztlyzatot szeretnnk
megkapni a T oszlopban, hiszen a MAX fggvnyt nem hasznlhatjuk s nincs olyan munkalapfggvny,
29

ami egy halmaz vagy tartomny msodik legnagyobb elemt adn vissza. Viszont szerencsre a NAGY
fggvny megfelel paramterezs mellett hasznlhat erre. A "=NAGY(B2:N2, 2)" formula az els
hallgat msodik legjobb jegyt adja vissza.
Menjnk azonban egy fokkal tovbb. Mi a hallgatk harmadik, negyedik, tdik legjobb jegye?
Termszetesen megtehetnnk, hogy a fenti formult mdostgatjuk trva a 2-t elszr 3-ra az U
oszlopban, majd 4-re a V oszlopban, s 5-re a W oszlopban, de ez flttbb macers. Az lenne az igazn
j, ha a formult egyszer kne csak berni s utna a formula msolsval (jobb als sarknak
elhzsval) el tudnnk lltani az sszes keresett formult. Akr a harmadik, vagy a negyedik
legnagyobb elemet is keressk, mindig ugyanazon gyakorlati jegyek kztt keresnk, teht B2:N2
tartomnynak nem szabad megvltoznia, ha jobbra msoljuk a formult, azaz az oszlopok abszolt
pozcijnak vltozatlannak kell lennie. Ezzel szemben lefele msolva a formult azt szeretnnk, hogy az
adott sorhoz tartoz jegyeket vegye figyelembe a formulnk, teht B2:N2 tartomny a formulhoz
viszonytott relatv pozcijnak vltozatlanak kell lennie. sszefoglalva a NAGY fggvny els
argumentumba a $B2:$N2 tartomny-kifejezst kell rnunk. Mi a helyzet azonban a NAGY fggvny
msodik argumentumval, azzal ami meghatrozza, hogy hnyadik legnagyobb osztlyzatra vagyunk
kvncsiak? Tbb mdon is megoldhatjuk, hogy ezt se kelljen a formulnk msolsa utn mdostani.
Egy lehetsges megolds mutat a 7-4. bra.

7-4. bra. A legjobb jegyek megkeresse egyetlen formula msolsval

Az brn a NAGY msodik argumentumt mindig a fejlc sorbl veszi a formula. A dollr jel a sor
koordintja eltt biztostja, hogy lefel msols utn is az els sorra mutat a msodik argumentumban
megadott cm, mg a dollr hinya az oszlop betjele eltt biztostja, hogy jobbra msols utn is mindig
az adott oszlop fejlcre mutat a msodik argumentumban megadott cm. A7-4. brn lthat tovbb,
hogy hogyan lehet egyszeren a fejlceket belltani gy, hogy megadjk, hogy hnyadik legnagyobb
osztlyzatot tartalmazza az adott oszlop. Egyszeren az elz fejlc rtkhez kell hozzadni egyet. Ez a
mdszer is azrt knyelmes, mert a cella msolsval gyorsan le tudjuk gyrtani a szksges
oszlopfejlceket.

30

A fentiek utn mr knnyedn meg tudjuk vlaszolni, hogy mi a hallgatk legjobb kilenc osztlyzatnak
tlaga. Az "=TLAG(S2:AA2)" formulban a korbban kiszmolt rszeredmnyeket hasznljuk fel.
Az AC oszlopban adjuk meg, hogy van-e a hallgatknak legalbb kilenc gyakorlata, amit legalbb
kettessel teljestettek. Ha szrevesszk, hogy akkor van egy hallgatnak kilenc, legalbb elgsgessel
teljestett gyakorlata, ha a kilencedik legjobb gyakorlati jegye legalbb kettes, akkor knnyen addik a
korbbi szmtsainkat felhasznl megolds. Emlkezznk, hogy az AA oszlopban troltuk a hallgatk
kilencedik legjobb jegyt, gy a keresett formula: =HA(AA2>=2, "van", "nincs")
Ha megnzzk a tblzatunkat (7-5. bra), azt lthatjuk, hogy nhny sorban nem a "van" vagy a "nincs"
sz szerepel az AC oszlopban, hanem a hibt jelz "#SZM!" felrat. Mirt van ez? Azrt mert nhny
hallgatnak nincsen kilenc gyakorlata, gy nem rtelmezhet a kilencedik legjobb osztlyzata sem. Mit
lehet ilyen esetben tenni? Jelen esetben ezeket a hibkat figyelmen kvl fogjuk hagyni, de a HAHIBA
munkalapfggvnnyel tudjuk ezeket az eseteket knyelmesen lekezelni.

7-5. bra. A feladat megoldsa nhny rszfeladat utn

Az AD oszlopban adjuk meg, hogy a hallgatk kaphatnak-e flvvgi jegyet. Az egyszersg kedvrt
most nem szvegesen fogjuk ezt megadni, azaz nem a "kaphat", "nem kaphat" rtkeket adjuk a cellk
rtknek, hanem logikai kifejezsknt adjuk meg a vlaszunkat. Akkor jr a flvvgi jegy, ha legalbb
elgsgessel teljestett a hallgat kilenc gyakorlatot s tment az ellenrz mrsen is, teht a
hasznland formula: =S(AA2>=2, O2>=2)
Vgezetl az AE oszlopban adjuk meg a hallgatk flves jegyt. Emlkeztetl a hallgat flves jegye
a kilenc legjobb rai gyakorlatra kapott jegy s az ellenrz mrsre kapott jegy kerektett tlaga, ahol
az ellenrz mrs jegye 50 szzalkos sllyal szerepel. Ezt a vgs feladatot is rszfeladatokra lehetne
31

bontani, de remlhetleg enlkl is kvethet lesz a megolds. Termszetesen most is felhasznljuk a


korbbi rszfeladatok megoldst. Hogyan lehet a slyozott tlagot kiszmolni? A kilenc legjobb
gyakorlat tlagt az AB oszlopban mr kiszmoltuk, ennek s az ellenrz mrsnek kell venni az tlagt:
=TLAG(AB2, O2). Mindez azonban akkor szmt csak, ha a hallgat amgy teljestette a tantrgy
kvetelmnyeit. Ez az AD oszlopban nztk meg. Teht a vgs formula a kvetkez: =HA(AD2,
TLAG(AB2, O2), 1)
Utols simtsknt pedig az AE oszlop cellaformzsnl lltsuk be, hogy a szmok tizedes jegyeit ne
mutassa az Excel, gy mr tnyleg az Indexbe vagy a Neptunba berhat osztlyzatokat kapunk.

8.

Makrk hasznlata

Makrk rgztse, visszajtszsa, gyorsbillentyhz rendelse. Relatv, abszolt cmzs a markrgzts


sorn. Makrk forrsnak megtekintse
Az Excellel vgzett munka sorn gyakran el szokott fordulni, hogy mr egy meglv munkafzeten kell
szisztematikus mdostsokat vgrehajtani. Tegyk fel, hogy egy 400 sorbl ll munkalap minden
egyes sorn ugyanazt a vltoztatst elvgezni. Ebben az esetben a 400 sor trsa egyrszt idignyes,
msrszt knny hibzni a monoton munkban. Ekkor jhet jl, ha a munkafolyamat egyik
lpssorozatt rgztjk, s egy gyorsbillentyhz rendeljk, majd ksbb csak ezt gyorsbillentyt kell
400 megnyomnunk. (A kvetkez fejezetekben majd azt is elsajttjuk, hogy hogyan lehet pusztn
egyetlen gombnyomssal a kell szm lpsszer visszajtszani a korbban rgztett lpssorozatot.)
Az Excel nyelvn egy lpssorozatot makrnak hvjuk s a lpssorozat felvtelt markrgztsnek s a
makr visszajtszst a makr futtatsnak. Elkpzelhetjk a makrkat gy is, hogy a rgztsnl valaki
egy videokamerval felveszi, hogy milyen billentyket milyen sorrendben nyomtunk meg, hogy az egeret
merre mozgattuk s hogy mikor klikkeltnk. Majd a makr futtatsa sorn a videt rgzt szemly a
felvtelek alapjn helyettnk a rgztett sorrendnek megfelelen leti a billentyket, amiket mi is
letttnk, arra mozgatja az egeret, amerre mi is mozgattuk, stb. Ez az analgia segthet megrteni a
makrk mkdsi elvt, azonban ennl egy kicsit rnyaltabb a kp.

32

8-1. bra. Hallgati krvnyek. Mintaadat makr-rgztshez

Nzzk meg a 8-1. brn tallhat munkafzetet. A tblzat hallgati krvnyek adatait tartalmazza.
Egy sor egy krvnynek felel meg. Az A-H oszlopok a hallgatra vonatkoz adatokat adnak meg, mg az I,
J, K oszlopokban X szerepel, ha a hallgat krelmnek trgya az oszlopfejlcben tallhat. Az L oszlop
egyb krelmek szveges megadsra szolgl.
Tegyk fel, hogy ebben a tblzatban tmeges mdostsokat kell vgrehajtanunk, mert a hallgatk
nagy szmban szeretnnek npszer, szegedi "Bke Tanszkre" tiratkozni. Teht feladatunk rgzteni
egy makrt, ami felttelezi, hogy kezdetben az A oszlopban van a kurzor, ekkor az adott sorhoz tartoz
tanszk rtket lecserli "Bke Tanszk"-re, s az ignyt passzv flv krsre mdostja (azaz a J, K, L
oszlopok rtkt trli s I-be egy X-et tesz); vgezetl a kvetkez sor A oszlopban hagyja a kurzort.
Noha nem felttlenl szksges, mgis hasznos megint bekapcsolni a 3. fejezet vgn lertaknak
megfelelen fejleszteszkzk szalagot (8-2. bra).

8-2. bra. A Fejleszteszkzk szalag

Teht helyezzk a kurzort az A2-es cellba, majd a Fejleszteszkzk szalag Kd csoportjban klikkeljnk
a Makr rgztse gombra. Ekkor egy ablakban megadhatjuk a rgzteni kvnt makr adatait.
Megadhatjuk a makr nevt (pldul tanszk_vlts). Tovbb definilhatunk egy, a makrhoz
kapcsold gyorsbillentyt, aminek a lenyomsa majd lefuttatja a most rgztend makrt (ez lehet
pldul control+q). Tovbb megadhatjuk a makr helyt, azaz hogy hova mentse le az Excel a
makrnkat. Jelen esetben rdes az alaprtelmezett "Ebben a munkafzetben" opcit megtartani, mert
a tanszkvlts makrnknak csak ezeket az adatokon, csak az itt hasznlatos adatstruktrn van
rtelme. Vgezetl rhatunk egy hosszabb lerst a makr mkdsrl. Knnyen elfordulhat, hogy egy
33

hosszabb munkamenet sorn j nhny makrt rgztnk, ezrt legalbb a makrk nevt mindenkppen
tancsos az alaprtelmezett Makr1, Makr2, stb. nvrl olyanra vltoztatni, ami utal a makr ltal
elvgzett tnyleges feladatra. Ha teht megfelelen kitltttk a Makrrgzts ablak ltal krt
adatokat, akkor az OK megnyomsval vgre elkezdhetjk a makrnk rgztst.
A rgzts els lpseknt azt kell eldntennk, hogy bekapcsoljuk-e a Relatv hivatkozsok hasznlatt
(8-2. bra). A formulkban hasznlatos relatv, illetve abszolt cmzshez hasonlatosan ez az opci arra
szolgl, hogy a rgzteni kvnt munkafolyamatot az Excel az aktulis cellhoz kpes rgztse, vagy az
egyes lpsek globlis pozcijt jegyezze fel. Esetnkben a kurzor az A2-es celln ll, azaz az A2-es cella
az aktv cella. Ha nem kapcsoljuk be a relatv hivatkozsokat s ebben a sorban trjuk a tanszk nevt
Bke tanszkre, s elvgezzk a tbbi mdostst is, akkor a makr futtatsa sorn (control-q
billentyzetkombinci lenyomsa utn) megint a msodik sorban fogja a makr trni a tanszk nevt.
Teht jelen esetben be kell kapcsolnunk a relatv hivatkozsok hasznlatt.
Ott tartunk, hogy az A2-es cella az aktv, s relatv hivatkozsokkal rgztjk a makrnkat. Vagy
kurzormozgat billentykkel, vagy az egrrel jelljk ki az F2-es cellt s rjuk t a tartalmt "Bke
tanszkre", haladjunk tovbb s az I2-es cellba helyezznk egy "x" karaktert. Majd trljk ki a J2, K2,
L2 cellk rtkt. lljunk meg egy szra! Mi rtelme kitrlni a J2-es cella tartalmt, amikor az mr
most is res? Valban, a msodik sorban ennek nincs tl sok rtelme, azonban a makrrgzts sorn
egy olyan munkafolyamatot kell rgztennk, ami minden lehetsges adatra, minden lehetsges
hallgati krvnyre helyesen fut majd le. Ha azt szeretnnk, hogy a makr helyesen fusson le az A3-as
cellbl indtva is, mr most ki kell trlnnk az res J2-es cellt, mert a J3-as cella nem res.
A rgzteni kvnt munkafolyamat utols lpseknt mozgassuk a kurzort az L2-es cellbl t az A3-as
cellba, majd ugyanarra a gombra klikkelve, amivel a rgztst elindtottuk, fejezzk be a makrnk
rgztst. Figyeljk meg, hogy a makr felvtelt az A2-es cellbl kezdtk s az A3-asban fejeztk be.
Relatv hivatkozsokat hasznltunk, ezrt ha most megnyomjuk a makrhoz rendelt gyorsbillentyt
(control-q), vagy a Fejleszteszkzk szalag Makrk ikonjra klikkelnk s kivlasztjuk a most felvett
makrt, akkor lefut a makrnk. A markn visszajtszsa trja a harmadik sorban a tanszk nevt,
kitrli a megfelel cellk tartalmt s az A4-es cellba helyezi a kurzort. Ez azrt praktikus, mert a
gyorsbillenty ismtelt lenyomsval knnyedn fel tudjuk dolgozni a munkalap adatait.
ltalnossgban is elmondhat, hogy rdemes gy rgzteni a makrkat, hogy knyelmesek legyenek
ismtelt futtatsok hasznlatakor.
34

Vgezetl a Fejleszteszkzk szalag Makr ikonjn keresztl vlaszuk ki a makrnk szerkesztst. Ekkor
a Microsoft Visual Basic Editor ablak fog megjelenni benne a makrnkhoz tartoz Basic programkd (8-3.
bra).

8-3. bra a tanszk_vlts makr forrskdja

Anlkl, hogy tlzottan rtennk brmit is a forrskdbl, pusztn nmi angol nyelvtudssal
kisilabizlhatunk egy kt dolgot. A "Bke tanszk" s "x" stringeket knnyen szrevehetjk. Mindkt
string egy rtkads jobb oldaln szerepel, viszont a bal oldal mindkt esetben azonos. Azt tudjuk, hogy
klnbz cellk rtkt cserli le a makrnk Bke tanszkre s x-re. gy sejthetjk, hogy az rtkads
bal oldala az aktulisan kijellt cellt, az aktv cellt (ActiveCell) jelli. Mi trtnik a kt rtkads
kztt? A makrrgzts sorn az F2-es cellbl az I2-es cellba vltottunk, teht a kt rtkads kzti
egyetlen sornak valahogy ezt a cellavltst kell lernia. s valban: az I2-es cella pontosan hrom
cellnyira van az F2-es celltl.
Tovbb is lehetne folytatni ennek, a most mg ismeretlen programnyelven rt rvid makrnak az
elemezgetst, de most rjk be annyival, hogy a felvett makrk Basic programnyelven kerlnek
rgztsre. Ezeknek a makrknak a forrst meg tudjuk tekinteni s azokat, ha szeretnnk,
mdosthatnnk is.

9.

Egyszer Visual Basic programok

Basic nyelvi elemek: eljrsok, While/Until ciklus, If szintaktikja, Not, Mod, rtkadsok.
Programmintk az aktv cella mozgatsra plve: ActiveCell, IsEmpty, Cells, Offset, Select, Row, Column
35

A Python programozsi nyelvet ismerknek a Visual Basic programnyelv szintaktikja nem lesz teljesen
ismeretlen. Van egy-kt hasonlsg s egy pr alapvet klnbsg is a kt programozsi nyelv kztt.
Azonban nem clunk a Basic minden rszletnek megismerse, megelgsznk annyival, amennyivel
Excel, Word s egyb vezrlsi feladatainkat meg tudjuk oldani. Ugyanis a Basic egy ltalnos
programozsi nyelv, de szmunkra azrt rdekes, mert a klnbz Office alkalmazsok programozsi
interfsze knnyedn elrhet vele.
Rgztsk az elz fejezet sorn hasznlt makr egyszerbb vltozatt, ami csak a tanszket rja t az F
oszlopban. Az makrhoz felvett programkd a 9-1. brn lthat.

9-1. bra. A tanszktr makr egyszerbb vltozata

A kommentek az aposztrf karakterrel vannak bevezetve. Az aposztrftl kezden a sor vgig a Basic
rtelmez mindent figyelmen kvl hagy. A kommentek nem a szmtgpnek, hanem a programoznak
szlnak.
A Python def kulcsszavhoz hasonlan a Basicben a Sub kulcsszval kell bevezetni egy eljrs
definilst. A Sub kulcssz utn az eljrs neve, majd az eljrs argumentumai kvetkeznek. Jelen
pldnkban a Tanszek_atiras eljrsnak nincsenek argumentumai. Az eljrs trzsben szerepelnek az
eljrs meghvsakor lefuttatand utastsok. Szintn a Pythonhoz hasonlan egy sorban egy utasts
lehet. Vgezetl az eljrs vgt az End Sub kulcssz zrja.

36

9-2. bra. A kt megolds a hallgati krvnyeket tartalmaz tblzat tanszk adatainak trsra

Tegyk fel, hogy a tanszk nevt a hallgati krvnyeket tartalmaz tblzat sszes sorban t
szeretnnk rni. Persze ezt a feladatot megoldhatnnk gy is, hogy az aktv cellt az A1-re lltva sokszor
lenyomnnk a control+q gyorsbillentyt. A 9-2. bra kt olyan megoldst mutat, amikor elg pusztn
egyetlen egyszer elfuttatni egy makrt az A2-es cellbl indtva s a tblzat sszes sora mdosul. Az
bra bal oldaln lv eljrs az ltalunk rgztett makr egyszer mdostsa: az eljrs trzst
vltozatlanul hagyva egy ciklus magjv tettk. A While ciklus addig hajtja vge a ciklus magot, ameddig
a ciklusutasts felttele mg igaz marad. Jelen esetben ez a "Not IsEmpty(ActiveCell)" logikai kifejezs
vizsglatt jelenti. Az IsEmtpy fggvny igaz rtkkel tr vissza, ha az argumentumban szerepl
tartomny-kifejezs ltal meghatrozott terlet res. Az ActiveCell pedig az aktv cellra mutat
tartomny-kifejezs. A Not pedig a mgtte lv logikai kifejezs negltjt lltja el. Teht a While
ciklus magja mindaddig vgrehajtdik, ameddig az aktv cella nem lesz res, azaz ameddig az A
oszlopban van valami.
A 9-2. bra jobb oldaln tallhat programkd szintn trja az sszes tanszk nevt, azonban most a
korbban rgztett Tanszek_atiras nev makrt nem mdostottuk. Tudjuk, hogy ez a makr az A
oszlopbl indtva trja az adott sorban a tanszk nevt, s a kvetkez sorra ugrik. Az jonnan rt
osses_tanszek_atiras nev makrnk leprogramozsa sorn nem kell ennl tbbet tudnunk a
Tanszek_atiras eljrsrl, nem kell tudnunk, hogy a Tanszek_atiras hogyan rja t az F oszlopban a
tanszk nevt s hogyan helyezi az aktv cellt a kvetkez sor A oszlopba. A korbbihoz hasonl While
ciklus ciklusmagja most egyszeren meghvja a Taszek_atiras eljrst.
37

Ez a msodik megolds megint egy j plda volt egy problmnak a kisebb rszfeladatokra bontsval
trtn megoldsra. Az sszes sor trst gy oldottuk meg, hogy ksztettnk egy, egy sort tr
makrt; meg egy olyat, ami a tblzat minden sorra meghvja az egy sort tr makrt.

9-3. bra. A ngyfle ciklusutasts szintaktikja

A 9-3. bra a Basicben hasznlhat ngy klnbz ciklusutasts szintaktikjt mutatja be. Eddig a bal
fels formt hasznltuk. Itt a Do While ciklus a ciklusmagot mindaddig lefutatja, ameddig csak a ciklus
felttel igaz marad. Ehhez kpest a jobb fels, Do Until forma annyiban klnbzik, hogy a ciklusmagot
addig hajtja vgre, ameddig a ciklus felttele igazz nem vlik. A Do While forma egyszer sem hajtja
vgre a ciklusmagjt, ha a ciklus felttele az els kirtkelskor hamis lesz, mert elbb vizsglja meg a
kilpsi felttelt s ennek fggvnyben hajtja vgre a ciklusmagot. Ezzel szemben az als Loop While
s Loop Until ciklusutastsok elbb hajtjk vgre a cikklusmagot s csak azutn vizsgljk meg a ciklus
kilpsi felttelt. Mikor melyik vltozatot hasznljuk? Ez sok mindentl fgghet. ltalnossgban az
lehet mondani, hogy a While/Until varinsok kzl azt a ciklusszervezsi formt hasznljuk, ami az adott
esetben a termszetes gondolatmenetnknek jobban megfelel. Amit az egyikkel el lehet rni, azt a
msikkal is, egyszeren csak neglni kell a kilpsi felttelt. A Do While s a Loop While varinsok
kztti vlasztskor pedig a felttelvizsglat ideje alapjn dntsnk.
A ciklusutastsoknl egyszerbb vezrlsi szerkezet a feltteles utasts. Az If utasts szintaktikja
szintn sokban hasonlt a Python feltteles utastshoz. A 9-4. bra bal oldaln egy kellen ltalnos
alakban szerepel a szintaktikja. Ha a felttel1 logikai kifejezs igaz, akkor az akr tbb parancsbl, gy
tbb sorbl ll "parancsok1" utastsblokk hajtdik vgre. Ha a felttel1 nem igaz, akkor felttel2
vizsglata kvetkezik, ha az igaz, akkor a parancsok2 utastsblokk hajtdik vgre, ha ez sem igaz, akkor

38

a parancsok3 utastsblokk. Az ElseIf tetszlegesen sokszor megismtldhet s az Else g is elhagyhat.


Az bra jobb oldaln lthat plda az i vltoz rtknek fggvnyben lltja be az s vltoz rtkt.

9-4. bra. A feltteles utasts szintaktikja s egy plda a hasznlatra

Trjnk mg egyszer vissza a 9-1. brn lthat makrra. Itt a feladatunkat gy oldottuk meg, hogy az
aktv cellt mozgattuk s aktv cellnak adtunk rtket. Sok Excel automatizlsi feladat megoldhat
ehhez hasonl megkzeltssel. Az ilyen feladatok megoldsa sorn csak arra kell gondolni, hogy mi mit
csinlnnk, amikor manulisan a kurzormozgat-billentykkel oldannk meg a feladatunkat. Az albbi
Excel vltozk hasznosak lehetnek az ilyen elvet kvet programozskor.
Az ActiveCell egy olyan tartomny-kifejezs, ami az aktulis munkalap aktv celljra mutat.
A Cells(sor, oszlop) egy olyan tartomny-kifejezs, ami az aktulis munkalap "sor" s "oszlop" egsz
szmok ltal meghatrozott celljra mutat.
Ha t egy tartomny-kifejezs, akkor t.Offset(sor, oszlop) egy olyan tartomny-kifejezs, ami a t-hez
kpest "sor" sorral s "oszlop" oszloppal eltolt tartomnyra mutat.
Ha t egy tartomny-kifejezs, akkor a t.Select egy olyan utasts, ami kivlasztja a t ltal meghatrozott
tartomnyt. Ha t egyetlen cellra mutat, akkor ez az utasts az aktv cellt lltja be t-re. Ennek alapjn
az "ActiveCell.Offset(0, 5).Select" utasts az aktulis cellt, vagy ms nven a kurzort mozgatja t
oszloppal jobbra.
Ha t egy tartomny-kifejezs, akkor a t.Row illetve a t.Column azt adja meg, hogya t tartomny jobb
fels sarka a munkalap hnyadik sora illetve oszlopa. Teht pldul ha a kurzor az A4-es cellban van,
akkor az ActiveCell.Row rtke 4 s az ActiveCell.Column rtke 1.
39

Nzznk most a fentiekre egy kellen sszetett pldt. Tegyk fel, hogy van egy munkalapunk, amiben
az A oszlop res, viszont a szomszdos oszlopokban szmok tallhatk. Ezek utn legyen az, a nem
kimondottan a val letbl vett, megoldand feladatunk, hogy az A oszlopba kell gyjtennk az adott
sor legkisebb rtkt s a legkisebb szmot tartalmaz cella rtkt meg kell nvelnnk eggyel. A 9-5.
bra bal oldala mutat el lehetsges kiindulsi llapotot, a jobb oldali fele pedig erre a kiindulsi llapotra
a megoldst.

9-5. bra. Mintaadatok a soronknti legkisebb szm kivlasztshoz s a hozzkapcsold megolds

10.

A Visual Basic Editor

A szerkeszt hasznlata, nyomkvets. Az azonnali ablak, Debug.Print()


A 8. fejezetben mr lttuk, hogy kell egy makrhoz tartoz forrskdot megnzni. Az ott lertakon kvl
az Excelbl mg az Alt-F11 gyorsbillenty lenyomsval is elhozhatjuk a Visual Basic Editort. Ez az
Editor lnyegben egy egyszer szvegszerkeszt, azonban szmos olyan funkcival rendelkezik, ami
megknnyti a programfejlesztst.
Mg a legtapasztaltabb programozkkal ltal megrt kicsit is nagyobb llegzetvtel programok vagy
csak eljrsok sem szoktak elsre helyesen mkdik. Ilyenkor nagyon nehz pusztn a program hibs
viselkedsnek megfigyelsbl kitallni a programozsi hiba okt. A programfejlesztsnek ezt a
jelents rszt kitev hibakeressi folyamatot szoktk debugolsnak2 nevezni.
A Fejleszteszkzk szalag (8-2. bra) Kd csoportjnak Makrk ikonjra klikkelve vagy az Alt-F8
gyorsbillenty lenyomsnak hatsra egy ablakban megjelenik az ltalunk rgztett, vagy rt makrk
listja. Itt a kivlasztott makrt nem csak futtatni tudjuk (Indts men), hanem a debugolst segt
nyomkvetsi mdban is tudjuk futtatni a Lpsenknt menponttal. Ekkor a makrt lpsenknt hajtja
vgre az Excel, jobban mondva utastsonknt. A soron kvetkez utasts vgrehajtsa eltt a Basic

2 A kifejezs eredete mg a mechanikus (szmt)gpek idejre nylik vissza, amikor a hibs mkds
valban szrmazhatott a gpbe bekerlt bogaraktl.
40

rtelmez felfggeszti a program futtst s a Visual Basic Editorban srga httrrel kisznezi az
utastst. A 10-1. brn egy eljrsban val belps ltszik.

10-1. bra. Nyomkvetsi lehetsgek a Visual Basic Editorban

A felfggesztett vgrehajtst tbbflekppen folytathatjuk. A 10-1. brn a szerkeszt Debug menje is


lthat, amibl kivlaszthat a folytats. Neknk legtbbszr az F8 gyorsbillentyvel is elrhet "Step
Into"-t rdemes vlasztani. Ennek hatsra egy utastst vgrehajt a Basic rtelmez, majd megint
felfggeszti a program vgrehajtst. Az Excel ablak s a Visual Basic Editor kztt vltogatva gy
viszonylag knnyen tudjuk ellenrizni, hogy az egyes utastsoknak valban a tervezett hatsa van. Ha
az ltalunk elvrtl eltr viselkedst tapasztalunk, akkor le tudtuk szkteni a programozsi hibt
egyetlen egy utastsra, amit remlhetleg mr nem lesz nehz kijavtani.
A futtats felfggesztett llapotban nem csak az Excel ablakban a munkafzet aktulis llapott tudjuk
megnzni, hanem az Editorban az egrkurzort egy vltoz fl hzva egy gyorstipp ablakban kzvetlenl
a vltoz mellett leolvashatjuk a vltoz aktulis rtkt. Az ilyen vizsglatok akkor hasznosak, amikor a
programunk ppen vizsglt utastsainak nincs kzvetlen lthat hatsa. A 10-2. brn az i vltoz
rtkt vizsglva megllapthatjuk, hogy a bal oldali esetben a kvetkez, srgval jellt utasts
vgrehajtsa nullval val oszts miatt futsi hibt fog eredmnyezni, mg a jobb oldali esetben ez nem
fog bekvetkezi.

41

10-2. bra. Vltoz rtknek vizsglata nyomkvets sorn

Egy nagyobb, tbb eljrsbl ll, nagy adathalmazon fut program vgrehajtsa sorn elfordulhat,
hogy nagyon sok utastst kell megvizsglnunk mg vgre megtalljuk a helytelen eredmnyt okoz
programozsi hibt. Ebben az esetben hasznos, ha a "Step Into" helyett mskpp folytatjuk a
felfggesztett futtatst. Ha biztosak vagyunk benne, hogy egy eljrs helyesen mkdik, akkor
felesleges annak a vgrehajtsnak minden egyes lpst kln-kln megvizsglni. Nem kell belpni az
eljrsba, hanem elg tlpni rajta (Step Over), azaz a futtatst elg felfggeszteni, ha az eljrs
vgrehajtsa befejezdtt. Ha biztosak vagyunk benne, hogy a 10-1. brn lthat Tanszek_atiras
eljrsunk helyesen mkdik, annak vgrehajtst tugorhatjuk a Shift-F8 gyorsbillentyvel.
Szintn hasznos lehet a Control-Shift-F8 billentykombincival elrthet nyomkvetsi parancs. Ennek
hatsra a Basic rtelmez befejezi a vgrehajtst az aktulisan nyomon kvetett eljrsnak, teht
annak az eljrsnak, amelyik a srga sort tartalmazza.
A Control-F8 hatsra pedig addig nem fogja megszaktani a programunk futtatst a Basic rtelmez,
amg a futtats a kurzorhoz nem rt. Teht addig, amg a kvetkez vgrehajtand utasts pont a
kurzornl tallhat utasts nem lesz.
Egy nagy s sszetett program nyomkvetse sorn a fenti lehetsgek helyes hasznlatval jl tudunk
naviglni a rszletesebben megvizsglni kvnt programsorok kztt, azonban nha jl lenne az tugrott
rszek mkdst is valahogy megvizsglni. Erre szolgl az gy nevezett azonnali ablak (Immediate
Window) s a debug.Print() utasts. A debug.Print az argumentumt az azonnali ablakba rja ki, ami a
Visual Basic Editor als rszt tallhat s a norml felhasznlk ell az Editorral egytt rejtve van, gy
csak a programozk lthatjk. Hasznlhatjuk naplzsi clokra is, de hibakeressnl is hasznos lehet. A
42

10-3. brn az osszes_tanszek_atirasa makrt gy mdostottuk, hogy egy sor trsa eltt rja ki az
azonnali ablakba az aktulis cella rtkt. Ktszer futattuk le a makrnkat, az egyik esetben helyesen
mkdtt, de a msik esetben hibs vgeredmnyre vezetett. Mi lehetett ennek az oka? Nzzk meg
az azonnali ablakot a kt futtats esetn. (Ha nem ltszdna az ablak, akkor a Visual Basic Editorbl a
Control-G gyorsbillentyvel elhvat.) A jobb oldali esetben ltszik, hogy nem a hallgatk nevei
szerepelnek az azonnali ablakban, teht az aktv cella nem az A oszlopban volt, s ezrt rossz oszlopokat
mdostott a makrnk.

10-3. bra. Plda az azonnali ablak hasznlatra

Az azonnali ablak elnevezse onnan szrmazik, hogy programrs sorn vagy felfggesztett futtatskor
rgtn vgrehajthat parancsokat adhatunk a Basic rtelmeznek. A krdjellel kezdd sorok esetn
az enter letse utn a krdjel utni vltoz rtke vagy kifejezs eredmnyt rja a Basic rtelmez az
adott sort kvet sorba. A 10-4. bra els pldjban az aktv cella rtkt krdeztk le. A kvetkez
pldban egy kifejezs eredmnyre voltunk kvncsiak (1+1). Ezek utn egy parancsot adtuk ki, ami az
aktv cellt mozgatta eggyel lefele. A parancs vgrehajtsa sikeres volt, hiszen az utols pldban
ismtelten lekrdeztk az aktv cella rtkt, s az erre adott vlasz most az A2-es cella rtke helyett az
A3-as cella rtke lett.

43

10-4. bra. Azonnal vgrehajtott parancsok az azonnali ablakban

11.

A Basic tovbbi nyelvi elemei

Sorfolytat karakter. For ciklus. Visual Basic hasznlata Excel automatizlsra: a tartomny (Range)
osztly cmzsi lehetsgei. A Value s a Formula attribtumok kzti klnbsg. Eredmnyek kzlse:
Cellban, MsgBox(), Debug.Print().
A Basic nyelvben egy sor egy utastsnak felel meg. Nha azonban sszetett kifejezsek lersakor a jobb
olvashatsg miatt logikusabb lenne egy parancsot tbb sorba rni. Erre szolgl az gynevezett
sorfolytat karakter. Ha a sor a sorfolytat karakter zrja, akkor a parancs a kvetkez sorban
folytatdik. A Basic programnyelvben a sorfolytat karakter egy szkz s egy alhzs jel. A 11-1.
brn arra ltunk pldt, amikor az aktulis cella rtkt a tle balra s a felette lv cella sszegre
lltjuk be gy, hogy magt a parancsot kt sorban rjuk le.

11-1. bra. Plda a sorfolytat karakter hasznlatra

A While s Until ciklusutastsokkal mr a 9. fejezetben tallkozhattunk. Ha mr elre tudjuk, hogy


hnyszor szeretnnk a ciklusmagot lefuttatni, a For ciklusutastst rdemes hasznlnunk. A For parancs
ltalunk hasznlt, egyszerstett szintaktikja a 11-2. brn lthat. A Basic rtelmez a parancs
vgrehajtsnak els lpsben az egsz szmokat tartalmaz ciklusvltozt a kezdrtkre lltja, majd
egyszer lefuttatja a ciklusmagot. Eztn az rtelmez eggyel megnveli a ciklusvltoz rtkt. Ha a
ciklusvltoz nem rte el a vgrtket, akkor jra lefuttatja a ciklusmagot. Majd ismtli ezt a folyamatot
mindaddig, amg a ciklusvltoz vgl elri a vgrtket.

44

11-2. bra. A For utasts szintaktikja s egy plda a hasznlatra

A 11-2. bra jobb oldaln lthat pldban az i ciklusvltozt hasznl for ciklus ciklusmagja hrom
sorbl ll, ami egy j ciklusvltozt hasznl for ciklus. A bels, j vltozs ciklus ciklusmagja egyetlen
utastst tartalmaz, ami az azonnali ablakba rja ki az i s a j vltoz rtkt. A kls ciklus hromszor
fog lefutni s rendre 1, 2, s 3 lesz az i ciklusvltoz rtke. A bels ciklus minden egyes i rtkre
hromszor fog lefutni, teht sszesen kilencszer. Az azonnali ablakban a kvetkez sorok fognak a
futtats utn ltszdni: "1 1", "1 2", "1 3", "2 1", "2 2", "2 3", "3 1", "3 2", "3 3". A mkds nem
lenne teljesen vilgos, rdemes lpsenknti nyomkvetssel vgignzni a teljes ciklus vgrehajtst.
Egy Excel munkafzetet cellit be tudjuk jrni az aktv cella mozgatsval, de for ciklusok s a Cells
vltoz hasznlatval is, hiszen a Cells argumentumba sor s oszlopkoordintkat kell berni.
Elfordulhat azonban, hogy knyelmesebb a munkalap cellira annak koordinti helyett a
hagyomnyos Excel hasznlat sorn megismert cmzst hasznlni. A Cells-hez hasonl a Range vltoz
(objektum), aminek egszek helyett egyetlen stringet kell megadni argumentumknt. Ez a string brmi
lehet, ami a 7-2. bra fels rsznek bal oldaln is lthat nv mezbe rhat. A Range("A1:C5") az A1 s
a C5-s cellk ltal meghatrozott tglalapra mutatat tartomny-kifejezs, a Range("A:A") a teljes A
oszlopra mutat tartomny-kifejezs, a Range("3-3") a teljes harmadik sorra, mg a Range("A1:C5,
D6:F10") pedig kt tglalap unijra mutat tartomny-kifejezs.
A korbban megismert tartomny-kifejezseket hasznl parancsokon kvl az Excel programozsi
interfsze mg szmos ms parancsot definil. Az albbi parancsok gyakran bizonyulnak hasznosnak.
Ha t s c is egy tartomny-kifejezs, akkor t.Copy a t tartomnyt a vglapra helyezi. A "t.Copy c"
parancs pedig a t tartomnyt c-re msolja.
Ha t egy tartomny-kifejezs, akkor t.EntireRow egy olyan tartomny-kifejezs, ami a t-t tartalmaz
teljes sorra mutat. Hasonlan a t.EntireColumn a teljes sorra mutat.

45

Noha ennek a knyvnek nem clja az Objektum-orientlt programozs ismertetse, nem halogathatjuk
tovbb hogy ejtsnk pr szt a Basic a pontot hasznl klns szintaktikjrl. Tbbnyire elegend
annyit tudnunk, hogy a "vltoznv.parancs" szintaktika azt jelenti, hogy a parancsot a vltozn illetve a
vltzban trolt objektumon kell vgrehajtani. Ez a jellsrendszer azonban lehetsget biztost arra,
hogy a vltoztl is fggjn, hogy milyen parancs hajtdik vgre. Pldul a t.Copy egy tartomnyt helyez
a vglapra, ha t egy tartomny-kifejezs; azonban ha t egy munkalap objektum, akkor a t.Copy a
munkafzetbe illeszti a t msolatt.
Tovbbi elnye a pontot hasznl szintaktiknak, hogy ha az objektumon vgrehajtott parancs
eredmnye egy objektum, akkor azon jra hasznlhatjuk a pont opertort. Erre volt j plda a
ActiveCell.Offset(1, 0).Select parancs: az ActiveCell az aktv cellra mutat objektum, az
ActiveCell.Offset(1, 0) az akv celltl jobbra lv cellra mutat objektum, amin vgrehajtott Select
utasts azt a cellt teszi aktvv.
Mg "rendes" vltzknl az egyenlsgjel opertort hasznlhatjuk az rtkadsra ("i = 4"), addig, ha azt
szeretnnk, hogy egy vltz egy objektumra mutasson, akkor a "Set vltznv = rtk" szintaktikt kell
hasznlnunk. Pldul: Set t = c.EntireRow

11-3. bra. Plda a Value s a Formula kzti klnbsgre

Nzzk meg a 11-3. brn lthat kt parancsot. Ha a D3-as cellban 2 volt, akkor mindkt parancs utn
az F3-as cellbl a 30-as szmot olvashatjuk ki. Van azonban egy fontos klnbsg. Az els esetben az
F3-as cellba a 30-as szmot rjuk bele, mg a msik esetben az F3-as cellba egy kpletet rjunk, aminek
az eredmnye jelenleg 30. Ha azonban a parancsok vgrehajtsa utn trjuk a D3-as cellt 1-re, akkor
az els esetben az F3-as cella tovbbra is 30-at fog tartalmazni, mg a msodik esetben az F3-as cella
tovbbra is ugyanazt a kpletet fogja tartalmazni, de most a formula 15-re rtkeldik ki s nem
harmincra. gy is fogalmazhatunk, hogy a msodik esetben egy sorosabb csatolst hoztunk ltre a
cellk kztt.
Nzznk most egy sszetett programozsi feladatot. Tegyk fel, hogy van egy sok sorbl ll
munkalapunk, ami belga srgyrakrl s a gyrak ltal palackozott srkrl tartalmaz adatokat. Ezeknek
az adatoknak a segtsgvel szeretnnk klnbz krdseket megvlaszolni. Pldul kvncsiak
46

vagyunk arra, hogy az egyes srtpusukbl hny klnbzt lehet kapni, vagy hogy hny szzalkos az
egyes fzdk ltal forgalmazott legnagyobb alkoholtartalm ital. Ezekre a krdsekre nem knny
vlaszolni, ha a forrsadatok a 11-4. bra bal oldaln tallhat formtumba vannak megadva. Ha
azonban sikerlne egy makrt rnunk, ami a bal oldali adatokat a jobb oldali formtumra hozn, akkor
abbl kiindulva kimutatsokat tudnnk kszteni (6. fejezet) a krdseink gyors megvlaszolsra.
Az adatok ms formtumra val talaktst tbbflekppen is meg lehet oldani. Elsnek egy olyan
megoldst mutatunk be, ami az aktv cella mozgatst s a feladat kisebb rszegysgekre val bontst
hasznlja.
Els lpsknt tegyk fel, hogy van mr egy olyan masol_egy_gyarat nev parancsunk, amivel egy teljes
gyr adatit t lehet tmsolni a "beers" munkalaprl a "3" nev munkalapra. Azaz ha egy gyrnven van
az aktv cella, pldul az A1-en vagy az A12-n, akkor a srgyr adatait talaktva tmsolja a msik
munkalapra s az aktv cellt az A11-es illetve az A22-es celln hagyja. Ha lenne egy ilyen parancsunk,
akkor a teljes feladatot meg lehetne oldani a 11-5. brn lthat AdatAtlakito nevu makrval. Az els
ngy utastssal belltjuk az aktv cellkat a megfelel kezdrtkre, majd egy Until ciklus segtsgvel
tmsoljuk az sszes gyr adatt. A ciklusmagban az aktulis gyr tmsolsa utn eggyel lejjebb
mozgatjuk az aktv cellt, ha ez a cella res, akkor az azt jelenti, hogy kt res sor van a gyr adatai utn,
ami a forrsmunkalapon az adatok vgt jelzi.

47

11-4. bra. Srgyrak adatai

Egy gyr adatainak teljes tmsolst hrom rszre bonthatjuk. A masolj_egy_gyarat teht elszr
tmsolja a gyr nevt (az aktv cella vltozatlanul hagysval). Ezutn a cmzsi rszre ugrik, majd az
aktv cellt a cmrsz utnra mozgatja (ugord_at_a_cimzest), mivel a cminformcik teljesen
elhagyhatk a tblzatos formbl (11-4. bra). Vgezetl a gyr sszes srt tmsolja a
clmunkalapra.
Mivel a cmzsi rszben csak az A oszlopban vannak adatok s az utna kvetkez rszben az A
oszlopban nincsenek adatok, ezrt az ugord_at_a_cimzest eljrsnak mindaddig lefele kell mozgatnia az
aktv cellt, amg az A oszlopban res cellba nem tkzik.

48

11-5. bra. Az adat-talakts feladat megoldsa rszproblmkra val bontssal

A masold_at_a_gyarnevet eljrs programozs nlkl is elkszthet: egyszeren rgztennk kell egy


makrt, ami az aktv cella rtkt a vglapra helyezi, tvlt a "3" nev munkalapra beilleszti a vglap
tartalmt, majd visszavlt a "beers" munkalapra.
A masold_at_a_soroket az ugord_at_a_cimzest eljrshoz hasonlan mkdik: addig kell tmsolnia az
aktv sorban tallhat sradatokat s az aktv cellt eggyel lejjebb mozgatnia, amg a B oszlopban (azaz
aktv cellhoz kpest eggyel jobbra) res cellba nem tkzik, mert az a srgyr adatainak a vgt
jelenti.
Egyetlen sr adatinak az tmsols (masolj_at_egy_sort eljrs) is nagyjbl megoldhat a gyrnvnl
bemutatott makrrgztses mdszerrel. Az egyetlen nehzsg a gyrnv tmsolsa, mivel az nem
tallhat meg a "beers" munkalap aktv celljnak kzelben. De ennek a rszfeladatnak a megoldst a
masold_at_a_gyarnevet_ha_kell nev eljrsra hrtjuk t.
Ha egy srgyr elsnek felsorolt srnek adatait msoljuk t, akkor a gyrnvvel mr nem kell veszdnie
a masold_at_a_gyarnevet_ha_kell nev eljrsnak, mert azt a masold_at_a_gyarnevet eljrs mr
tmsolta a "3" munkalap A oszlopba. Ha azonban a srgyr tovbb sreinek az adatait msoljuk t,
49

akkor az A oszlop mg res, ezrt a "3" munkalapon az aktv cella feletti oszlopbl t tudjuk msolni az
aktulis srgyr nevt.
A fenti programkd nmikpp hosszra sikeredett, de cserbe a programozs sorn mindig csak
kezelhet mret rszfeladatokat kellett megoldani. A megolds sorn remlhetleg sikerlt tltni,
rszletesebben megrteni a forrs munkalap adatformtumt is, ezrt valsznleg knnyen rthet lesz
a 11-6. brn lthat, ugyanerre a feladatra adott tmrebb megolds is.

11-6. bra. Msodik megolds az adattalakts feladatra

A msodik megolds nem az aktv cellt mozgatsval dolgozza fel a forrsadatokat, hanem az r vltzt
hasznlja fel arra, hogy eltrolja, hogy ppen hol jr az adatfeldolgozsban. A t vltoz pedig azt trolja
el, hogy a "3" nev munkalapon hov kell a kvetkez adatot bemsolni. Az aktulisan feldolgozs alatt
ll srgyr nevt pedig a brewery vltozba troljuk el. Az els hrom sor ezen vltzk deklarlsra
szolgl, mivel ha egy vltzban objektumreferencit szeretnnk trolni, szksges a vltzt ezt
megelzen deklarlni, ami egybknt a "Dim valtznv" formval elegend megtenni.
A kvetkez kt sor belltja a t s az r vltozk kezdeti rtkt. Lthat, hogy a kls Until ciklus
ciklusmagjnak egy futtatsa egy sorgyr feldolgozst vgzi el. A ciklusmag kt Until ciklust tartalmaz.
Az els bels ciklus a cmrsz tugrst vgzi el. A msodik bels ciklus pedig egy sr adatait msolja t
50

a "3" munkalapra mghozz gy, hogy egy lpsben tmsolja a sr adatait tartalmaz teljes sort, majd
az els oszlopba berja a brewery vltozban eltrolt srgyr nevt.
Ebben a feladatban a makrnk ltal elvgzett szmtsok eredmnyt egy munkalapon jelentettk meg.
ltalban is jrhat t, hogy egy sszetettebb mveletsorozat eredmnyt a programunk
felhasznljval gy kzljk, hogy az eredmnyt egy cellba berjuk. Erre hasznlhat pldul az
"ActiveCell = eredmeny" parancs, ami az eredmeny vltz rtkt az aktv cellba rja. Egy msik
megkzelts az, amikor az eredmnyt egy felugr alakban kzljk a felhasznlval. Pldul a "MsgBox
eredmeny" paranccsal. Vgezetl, ha az eredmnyt nem a felhasznlval szeretnnk megosztani,
hanem mi magunk vagyunk r kvncsiak, akkor a korbban ltott mdon az azonnali ablakba is
kirhatjuk. Erre plda a "debug.Print(erendmeny)" parancs. Mindhrom t jrhat; az a fontos, hogy a
programunk felhasznlsnak figyelembevtelvel mrlegeljnk a lehetsgek kztt.

12.

Hatkony makrk rsa

Felesleges cellamozgatsok elkerlse. Frissts kikapcsolsa s a felhasznl tjkozatatsa:


Application.ScreenUpdating, Application.StatusBar.
A 11-5. brn lthat AdatAtalakito makrt egy ktezer sorbl ll munkalapra lefuttatva az fogjuk
tapasztalni, hogy bizony bele telik pr percbe, amg a makrnk vgez a munkjval. Persze ez tredke
annak az idnek, ami ahhoz kell, hogy mi magunk kzzel trjuk a megfelel formtumra a
forrsadatokat. Akr megelgedssel is tlthetne el minket az Excel ablakok villdzsa s az aktv cella
gyors vltozsa, azonban legynk egy kicsit telhetetlenebbek. Ha pldul olyan feladatokat szeretnnk
automatizlni, amire kzi feldolgozssal remnynk sincs, hogy egy emberlt alatt vgezni tudjuk,
akkor bizony nagyon fontos, hogy a programunk gyors legyen.
Sok olyan mdszert hasznlhatunk, amivel lass programunk futst nmikpp felgyorsthatjuk. St,
ltalban ezt a fajta megkzeltst rdemes hasznlni: rjuk meg a Basic programunkat, makrnkat egy
adott feladat megoldsra, aztn ha gy alakul, hogy a megoldsunk tlsgosan lassra sikeredett, akkor
prbljuk gy csiszolni, hogy megfelel sebessgnvekedst tudjuk elrni. ltalban knnyebb megrni
egy lass, de jl mkd programot s azt knnyebb felgyorstani, mint rgtn egy gyors s helyesen
mkd programot rni.
Ha programunk egy rszt makrrgztssel rtuk meg, akkor trekedjk arra, hogy elkerljk a
felesleges cellamozgatsokat. Pldul kezdknl gyakran elfordulhat, hogy a makrrgzts sorn fel
51

kell grgetnik a munkalap tetejn tallhat cmsorhoz, hogy megnzzk, melyik oszlopban milyen
adatok tallhatk, majd vissza kell grgetnik a kiindulsi llapothoz, hogy folytatni tudjk a
makrrgztst. Ha egy ilyen makrt sokszor meghvunk egy msik eljrsbl, akkor minden
eljrshvsnl egy felesleges fel- s legrdts hajtdik vgre. Ilyenkor egyrszt a rgzts eltt
megprblhatjuk vgiggondolni, hogy a rgzteni kvnt munkafolyamatot hogyan lehet minl kevesebb
lpsbl vgrehajtani. Msrszt a felvett makr forrskdjnak szerkesztsvel kitrlhetjk a
felesleges lpseket. Ez utbbi azrt is hasznos lehet, mert megrthetjk, hogy az egyes lpsek milyen
Basic parancsokkal valsthatk meg.
Az Excelbe ptett Basic rtelmez minden parancs vgrehajtsa utn frissti az Excel ablakok llapott.
Emiatt lthatjuk a makrnk futsa kzben, hogy az aktv cella folyamatos vltozik, hogy az res cellk a
programunk szmtsi eredmnyeivel telnek meg. A 12-1. bra arra mutat pldt, hogy hogyan rdemes
a parancsonknti frisstst kikapcsolni. Az Application.ScreenUpdating vltoz belltsval lehet
szablyozni a kpernyfrisstst. Ha biztosak vagyunk benne, hogy egy eljrsunk vagy a teljes
programunk helyesen mkdik, akkor jelents sebessgnvekedst tudunk elrni a rszlegesen
felfggeszthetett kpernyfrisstssel.

12-1. bra. Makr gyorstsa a kpernyfrissts kikapcsolsval

Ha azonban kikapcsoltuk a kpernyfrisstst s a programunk mg gy is sokig fut, akkor a programunk


felhasznlja nem fogja tudni, hogy mi trtnik a httrben. Vajon mennyit kell mg vrnia? rdemes-e
egyltaln vrnia, vagy a programunk vgtelen ciklusba kerlt s soka nem fogja befejezni a mkdst?
A kpernyfrissts idnknti ideiglenes visszakapcsolsval tudnnk tjkoztatni a felhasznlt a
programunk futsi llapotrl, de egy teljes kpfrissts tlsgosan idignyes lehet. Ilyen esetekben a
felhasznl gyors tjkoztatsra hasznlhat az Excel sttuszsora. Az Application.StatusBar vltznak
rtket adva tudunk a sttusz sorba rni. Az "Application.StatusBar = False" paranccsal pedig
lemondhatunk a sttuszsor hasznlatrl, a parancs kiadsa utn jra az Excel ltal szoksosan kirt
sttuszzenetek fognak ott megjelenni. A vltoz hasznlatra mutatat egy jl testre szabhat smt a
52

12-2. bra. A sokaig_tart eljrst kell meghvni az aktulis munkalap els szz sorrra. Minden tdig
sor feldolgozsa utn a sttuszsorba rjuk a feldolgozott sor sorszmt.

12-2. bra. Plda a sttuszsor hasznlatra.

Tovbbi gyorstsi lehetsg addhat a megfelel szmtsi bellts kivlasztsbl.


rszletesebben a 15. fejezetben lesz sz.

13.

Errl

Automatikus dokumentumgenerls

Dokumentum automatikus ellltsa Excel adatokbl cmtr segtsgvel. XML-szer adatokbl


formzott dokumentum ellltsa makr hasznlatval.
Az 5. fejezetben mr lthattuk, hogy hogyan lehet egy Excel munkalap s egy dokumentumsablon
felhasznlsval tbb dokumentumot ellltani. Most arra ltunk pldt, hogy egy Excel munkalapbl
egy dokumentum ismtld rszeit legenerlni.

53

13-2. bra. Forrsadatok a cmtras dokumentumhoz


13-1. bra. Cmtrknt generlt dokumentum

A krlevlvarzsl els lpsben a dokumentum tpusnak ltalban levelet szoktunk megadni, de nha
hasznos lehet eltr tpusok hasznlat. A cmtr tpussal el tudjuk rni, hogy a forrsadatok egyetlen
sablonba kerljenek bele. Ez termszetesen hasznos akkor, ha valban egy cmtrat szeretnnk
ellltani az Excelben trolt szemlyeket tartalmaz tblzatbl, azonban mskor is jl jhet a cmtr
tpus hasznlata. Tegyk fel, hogy az 13-2 brn lthat formtumban trolja egy borbarti kzssg a
raktron lv borai adatai. a cmtr ellltsra hasznlhat funkci segtsgvel az 13-1. brn lthat
itallapot knnyedn elllthatjuk. St, a trsasg kvetkez sszejvetelre elg csak az Excel fjlt
frissteni s az j itallap rgtn elllthat belle.

13-3. bra. XML szer formtumban megadott forrsadatok

54

Nzznk most egy olyan feladatot, amit Word-makr rsval kell megoldanunk. Tegyk fel, hogy
hallgati tmakirsok a 13-3. brn lthat formban adottak. Egy-egy logikai egysget egy cmke
hatroz meg. A cmkk kezdett a "<cmke>" a vgt a "</cmke>" jelli. Tegyk fel tovbb, hogy egy
Word dokumentumban mr mindegyik cmkhez ltezik egy stlus, pldul a cmhez az iw_cim nev
stlus, a ltszmhoz az iw_letszam nev stlus. A feladatunk ezutn az, hogy a forrsadatok a 13-4. brn
lthat alakra hozzuk.

13-4. bra. A helyes formtum tmakirsok

Szerencsre klnsebb programozsi munka nlkl meg tudjuk ezt a feladatot oldani. Olyan makrkat
kell rgztennk, ami a cmkket a megfelel szvegrszletekre cserli, mikzben a cmhez tartz
stlust is belltja. Nzzk meg pldaknt a 13-5. brt. A control-f gyorsbillenty utn elrhet Keress
s csere ablak Csere flk az Egyebek gomb megnyomsa utn tudjuk a lecserlt szveg stlust
belltani az als sorban tallhat Formtum gomb segtsgvel. Figyeljk meg, hogy a lecserlt szveg
formtuma iw_letszam lesz. A cmke zr rsznl a lecserlt szveget a "^p" jells zrja. Ezt a
specilis gomb megnyomsa utni menbl a bekezdsjel kivlasztsval tudjuk beszrni. Sajnos a
listban ktszer szerepel a bekezdsjel s csak a fels fog j sort beszrni a cserk utn.

55

13-5. bra. A ltszm cmke megformzsa kt cservel

rdemes mindegyik cmke cserjre kln makrt rgzteni s a sok kis makrt egy vgs makrbl
sorban meghvni. gy ha az egyik cmke cserjnek rgztsekor hibzunk, akkor elg csak egy makr
felvtelt megismtelni.
A Word makr elksztse sorn lthattuk, hogy a Word programozsa az Excelhez hasonlan trtnik,
ugyanazt a Basic programozsi nyelvet hasznljuk, csak a kt program programozsi interfsze tr el
egymstl, de a kvetend fejlesztsi elvek hasonlak.

14.

Futsi hiba kezelse

Az On Error nyelvi konstrukci fajtji. Tovbbi Basic nyelvi elemek: For Each, paramtertads,
fggvnyek. Rekurzi.

56

14-1. bra. Egyszer plda a futsi hibra

Nzzk meg a 14-1. bra bal oldaln tallhat egyszer eljrst. Az i s a j vltozknak az els kt sorban
rtket adunk, majd a harmadikban a j vltoznak jra rtket adunk, ezttal egy, az i-t tartalmaz
egyszer szmtson keresztl. Vgezetl egy felugr ablakban tjkoztatjuk a felhasznlt a j vltoz
aktulis rtkrl. A test_1 makr futtatsakor azonban a harmadik sor vgrehajtsakor az bra jobb
oldaln lthat ablakot dobja fel a Basic rtelmez, mivel az i rtke nulla s a nullval val oszts futsi
hibt generlt. Egy olyan hibba tkztnk teht, amit a Basic rtelmez a programunk elindtsa eltt
nem vett szre, hiszen a "j = 10 / i" parancs akr helyesen le is futhatott volna, ha az i vltozban nulltl
eltr szmot troltunk volna.
Ha a Basic rtelmez futsi hibba tkzik, akkor vgrehajtja az aktulis hibakezel eljrst. Az
alaprtelmezett hibakezel eljrs a 14-1. brn lthat felugr ablakkal megszaktja a program futtst.
Az aktulis hibakezel eljrst az On Error kezdet parancsokkal llthatjuk be.

14-2. bra. Pldk a hibakezel eljrsok hasznlatra

A 14-2. bra test_2 eljrsa azt a hibakezel eljrst mutatja be, amelyik futsi hiba sorn a Basic
program futst egy megadott cmktl folytatja. Az "On Error GoTo hiba" sorral belltjuk, hogy futsi
57

hiba bekvetkeztekor a hiba cmktl kezdd hibakezelsi utastsokra ugorjon a Basic rtelmez. A "j
= 10 / i" sor vgrehajtsakor be is kvetkezik a nullval val osztsbl fakad futsi hiba, ezrt a "hiba:"
sorral megadott cmkre ugrunk. Ezutn a j s az i vltozknak megvltoztatjuk az rtkt s a "Resume
Next" paranccsal a futsi hibt kivlt parancs utni parancsra ugrunk vissza, azaz az "On Error GoTo 0"
sorra. Ez a parancs megint tlltja a hibakezel eljrst. A GoTo 0 nem a nulls cmkre fog ugrani hiba
esetn, ugyanis a 0 egy specilis cmke, ami az alaprtelmezett hibakezelsi eljrsnak felel meg. Teht
az "On Error GoTo 0" parancs vgrehajtsa utn egy futsi hibba futnnk bele, akkor a 14-1. brn
megismert felugr ablak jelenne meg. A test_2 eljrs kvetkez sorban egy felugr ablakot
jelentettnk meg j rtkvel, ami jelen esetben kett. Vgezetl az "Exit Sub" paranccsal befejezdik a
test_2 eljrs vgrehajtsa. Az "Exit Sub" parancsra azrt van szksg, mert hinyban jra a
hibakezelsi parancsaink hajtdnnak vgre.
Nzzk most meg a test_3 eljrst. Az egyetlen klnbsg a test_2 eljrshoz kpest az, hogy a
hibakezel parancsaik vgn nem "Resume Next" hanem "Resume" szerepel. A Resume visszaugrik a
hibt kivlt parancs vgrehajtsra, gy a hibt kivlt parancs ismtelten vgrehajtdik. Jelen
pldnkban ez azt jelenti, hogy j rtke 10 lesz s a felugr ablakban ez a szm fog megjelenni.
A test_4 esetn a hibakezelsi eljrst nem egy cmkre ugrsra mdostjuk, hanem az "On Error
Resume Next" paranccsal azt lltjuk be, hogy futsi hiba esetn az eljrs vgrehajtsa a hibt kivlt
parancsot kvet paranccsal folytatdjon. Emiatt a test_4 eljrs eredmnyekppen a felugr ablakban
a "5" szveget fogjuk olvasni.
Nzzk meg most a 14-3. bra test_5 nev eljrst. Mi fog trtnni ennek az eljrsnak a futtatsa
sorn? Nem fogunk semmilyen felugr ablakot ltni. A nullval osztsi hiba utn fellp hibakezelsi
eljrs a hiba cmtl folytatja az eljrs vgrehajtst, azonban a Resume vagy Resume Next parancsok
hinya miatt az "i = 1" parancs vgrehajts utn kvetkez "End Sub" sorral vget r az eljrs
vgrehajtsa.

58

14-3. bra. Tovbbi pldk a hibakezelsi mdszerekre

Az eddigi pldkban mindig a nullval val oszts miatt fellp futsi hibt kezeltk le gy vagy gy.
Azonban a teljessg kedvrt meg kell emlteni, hogy ez pont egy olyan futsi hiba, amit teljesen is el
tudunk kerlni egy egyszer felttelvizsglattal. Erre plda a test_6 nev eljrs. Az Excel programozsa
sorn azonban gyakran tallkozunk olyan lehetsges futsi hibkkal, amit jval egyszerbb a
hibakezelsi eljrs belltsval kikszblnnk.
Nzzk meg mg egyszer a test_2 eljrst. A sajt, specilis hibakezelsi eljrsunk pusztn egyetlen sor
vgrehajtsa sorn volt aktv, eltte s utn az alaprtelmezett hibakezelsi eljrs volt rvnyben. Ez
ugyan nem ktelez, rdemes a nem alaprtelmezett hibakezelst minl rvidebb idre korltozni: arra
a nhny utastsra, amelynek sorn arra szmtunk, hogy esetleg olyan futsi hiba fog fellpni, amely
specilis kezelst ignyel. Ezeket a kdrszleteket, az "On Error" kzti rvid rszeket, rdemes beljebb is
szedni, hogy rgtn szembetn legyen, hogy ott specilis hibakezels van rvnyben.

15.

Fggsgek feltrkpezse

Eldk, utdok feltrsa a felhasznli interfszek keresztl, szmtsi belltsok. Eldk, utdok
feltrsa Visual Basicben
Egy-egy nagyobb munkalap sok olyan formult tartalmazhat, amely sok msik cellra, tartomnyra
hivatkozik, amelyek sztszrva helyezkednek el a munkalapon, vagy esetleg ms munkalapokon
tallhatak. Mi magunk is azt az elvet kvettk a 7. fejezetben, hogy egy bonyolultabb formula helyett
sok kicsi formulbl ptkezve lltsuk ssze egy-egy bonyolultabb feladatra adott vlaszunkat. Ez
azonban azzal jr, hogy utlag nem egyszer tltni, hogy melyik cella melyik msik celltl fgg, illetve,
hogy melyik msik cellra van hatssal.
59

15-1. bra. A Kplet szalag kpletvizsglat csoportja s egy minta az eldk feltrsra

A Kpletvizsglat csoportban tallhat Eldk s Utdok mutatsa ikonok hasznlat ilyen esetben nyjt
nlklzhetetlen segtsget (15-1. bra). Pldul ha a C1-es cellban a "=D1+D2" formula szerepel s a
C1-es cella az aktv, akkor az eldk mutatsa funkci elhvsnak hatsra az bra jobb oldaln lthat
nyilak fogjk mutatni a formula fggsgeit. Ha ismtelten rklikkelnk az Eldk mutatsa ikonra, akkor
a formula eldeinek az eldeit is bejelli az Excel.
Egy-egy bonyolultabb formula miatt sok ideig tarthat egy-egy munkalap mdosts utn a megvltozott
forrsadatok ltal elidzett jraszmtsa a formulknak. Radsul egy jraszmtott formula egy
msik jraszmtst vonhatja maga utn, ami egy dominszer reakci beindtst is eredmnyezheti.
Ha az Excel grafikus interfszen keresztli norml hasznlata sorn tallkozunk ilyen jelensggel, akkor
rdemes manulisra vltani a formulk jraszmolst (15-2. bra). A programozsi interfszen
keresztl a szmtsi belltst a "Application.Calculation = xlCalculationManual" paranccsal tudjuk
kzire vltani, "Application.Calculation = xlAutomatic" paranccsal automatikusra vltani. Ha manulis
mdban vagyunk, akkor "Application.Calculate" paranccsal tudjuk az sszes munkafzet jraszmtst
elidzni.

15-2. bra. A Kpeltek szalag Szmts csoportja

Az eldk s utdok feltrkpezsre a programozsi interfszen keresztl is van lehetsgnk.


Knnyen tudunk olyan makrkat rni, amelyek figyelembe veszik egy formula fggsgi viszonyait. Ha
60

egy t egy tartomny-kifejezs, akkor a t.Precedents a t sszes eldt tartalmaz, a t.Dependents pedig a
t sszes utdjt tartalmaz tartomny-kifejezs lesz. A t.DirectPrecendents csak a kzvetlen eldket,
mg a t.DirectDependents csak a kzvetlen utdokat tartalmazza.
Ezen a ponton rdemes bernunk az egyik kifejezst a Visual Basic Editorba, mondjuk gy:
ActiveCell.Precedents s Precenents szn hagyva a kurzort az Control-F1 gyorsbillentyt lenyomni.
Ennek eredmnyekppen elugrik az Editor krnyezetrzkeny sgja. Sznjunk nhny pillanatot az
angol nyelv sg tanulmnyozsra. Sok esetben lesz hasznos, ha rszletes tanulmnyozs utn
pontosan megrtjk, hogy mi egy-egy eljrs pontos defincija.
A kpletvizsglatokhoz hasznlhat programozsi interfszen keresztl tudnnk olyan eljrst rni, ami
attl fggen lltan be a cellk httrsznt, hogy hnyadfok eldei, vagy utdai az aktv cellnak. Ez
az eljrs az alaprtelmezett nyilaknl tlthatbb felletet biztostana a fggsgi hierarchia
megretshez. De ezen tl is szmos gyakorlat pldt lehetne hozni, ami a kpletek fggsgeinek
feltrsra plne. Most mgis inkbb nzznk egy egyszer tanfeladatot. rjunk egy makrt, ami
kiszmtja egy cella sszes eldcelljnak sszegt.

15-3. bra. Mark, ami kiszmtja az aktv cella eldcellinak sszegt

A megolds forrskdja a 15-3. brn olvashat. Hasznlhatunk volna segdvltozkat is s kzlhettk


volna a felhasznlval a vgeredmnyt egy felugr ablakban, de most a szmts rszeredmnyeit s a
vgeredmnyt az F1-es cellban troljuk. A megoldsban az egyetlen jdonsg a "For Each" ciklus. Ez a
for ciklustl eltren nem egsz szmokon iterl, hanem az In kulcssz utn megadott gyjtemnyen.
Gyjtemny sok minden lehet, de neknk most legyen elg annyi, hogy tartomny-kifejezseket is
hasznlhatunk a For Each ciklus ezen rszben. A g nev ciklusvltoz a ciklusmag mindenegyes
lefuttatsakor a megadott tartomny-kifejezs egy-egy celljra fog mutatni. A ciklusmag ezek utn mr
knnyen rtelmezhet: a rszeredmnyekhez egyesvel hozzadjuk az eldk rtkt.

61

16.

Munkalapok kezelse Visual Basicbl

ActiveSheet, Select, Add, Name, iterci a munkalapokon


A felhasznli interfszen keresztl knnyen tudunk j munkalapot hozzadni egy munkafzethez. Meg
tudjuk vltoztatni egy munkalap nevt, esetleg trendezhetjk a munkalapok sorrendjt. Ugyanezeket a
feladatokat a programozsi interfszen keresztl is elvgezhetjk.
Nzzk meg teht milyen programozsi interfszt biztost az Excel a munkalapok manipullsra. A
Sheets objektumvltoz egy olyan gyjtemny, ami az aktulis munkafzet munkalap-objektumait
tartalmazza. A Sheets(1).Select parancs az els munkalapot vlasztja ki, azaz teszi aktvv. Ezzel
szemben a Sheets("1").Select parancs az 1 nev munkalapot aktivlja. A Set sh = Sheets(1) parancs
hatsra sh vltoz rtke egy referencia lesz az els munkalapra. A Set sh = Sheets.Add parancs
hatsra egy j, res munkalap jn ltre s addik hozz a munkafzethez, az sh vltoz erre az j
objektumra fog mutatni.
Az ActiveCell vltzhoz hasonlan az ActiveSheet az aktv munkafzet eltrben lv, azaz aktv
munkalapjra mutat vltoz.

16-1. bra. Kdrszlet a munkalapok neveinek kiratsra

Ha sh egy munkalapra mutat objektum, akkor az sh.Name kifejezs a munkalap nevt adja vissza.
Mivel a Sheets egy gyjtemny, ezrt a Sheets objektumban szerepl munkalapokon egy For Each
ciklussal vgig iterlhatunk. Erre mutat pldt a 16-1. brn lthat kdrszlet. A munkafzetben
szerepl munkalapok neveit egyenknt egy felugr ablakban kzljk a felhasznlval.
Az eddig hasznlt tartomny-kifejezseink mindig az aktulis, azaz az aktv munkalapra vonatkozott. Ha
sh egy munkalapra mutat objektumvltoz, akkor sh-koz kpesti tartomny-kifejezseket is
ltrehozhatunk. Teht az ActiveCell az aktulis munkalapon lv aktv cellra mutat tartomnykifejezs, mg az sh.ActiveCell az sh munkalapon lv aktv cellra mutat. Hasonlan az sh.Range("F3")
az sh munkalap F3-as celljra mutat.

62

A munkalapok hasznlatra kvetkez fejezetben ltunk rszletesebb pldkat. Most csak nzzk a
16-2. brn lthat Basic eljrs kdjt. Az t sorbl ll eljrs egyetlen lnyegi parancsot tartalmaz: a
Sheets(1).Delete kitrli az els munkalapot. A kitrls azonban adatvesztssel jrhat, ezrt az Excel egy
felugr ablakban kr megerstst a felhasznltl a trlsi mvelet vgrehajtsa eltt. A felhasznli
megerstst gy tudjuk elkerlni, hogy a Application.DisplayAlerts vltoz rtkt hamisra lltjuk.
Vgezetl ha a munkafzet egyetlen egy munkalapbl ll, akkor a trls nem engedlyezett s a trlsi
ksrlet futsi hibt eredmnyez. A futsi hiba elrejtst oldja meg a 14. fejezetben megismert
hibakezelsi mdszer.

16-2. bra. A munkafzet els munkalapjnak eltvoltst megvalst eljrs

17.

Adat importlsa webrl

Stringek sszefzse. Adatok importlsa a felhasznli s a programozi interfszen keresztl. .


Grafikonok automatikus ellltsa
Excel munkalapokra felvihetnk mi magunk adatokat, amelyet aztn klnbz mdon rtkelhetnk. A
4. fejezetben lthattuk, hogy kszthetnk olyan rlapknt funkcionl munkafzeteket, amelyeket
aztn munkatrsaink kztt terjesztve k tudjk az ltalunk meghatrozott formtum adatokkal
feltlteni a munkafzetnket. Az Excel fjl menjt megnzve lthatjuk azt is, hogy megnyithatunk
szveges fjlokat s xml formtumban trolt adatokat is. St, adatbzisbl fel tudunk tlteni egy
munkalapot.
Az Adatok szalag Kls adatok tvtele nev csoportjban meglv munkalapba tudunk adatokat
importlni. A 17-1. bra azt mutatja, hogy hogyan lehet az MNB weboldalrl betlteni egy munkalapba
a forint-eur rfolyamot. Miutn az bra kzepn lthat Adatok szalagrl kivlasztottuk a Weblaprl
trtn adatimportlst az bra htterben lthat, egy jl ismert webbngszhz hasonl
bngszablak jelenik meg. Ebben a bngszben kell az importland adatokat tartalmaz weboldalra
naviglnunk. A bngsz abban klnbzik a megszokott bngszktl, hogy a weboldalakon tallhat
63

tblzatok bal fels sarkba egy srga htter nyilat helyez el. A srga htter nyilakra klikkelve tudjuk
kijellni, hogy az oldalon tallhat tblzatok kzl melyeket szeretnk betlteni az Excelbe. A kijellt
tblzatok bal fels sarkban zld htter pipa fog megjelenni.

17-1. bra. rfolyamadatok importlsa a Magyar Nemzeti Bank weboldalrl

A bngsz jobb als sarkban lv Import, vagy a magyar nyelv vltozatban az Importls gombra
klikkelve tudjuk az adatbetltst kezdemnyezni. Az importls eredmnye az 17-1. bra jobb oldaln
lthat.
Az webrl trtn adatimportls egyik nagy elnye, hogy az adatok nem egyszeren csak
bemsoldnak a munkalapra, az Excel azt is eltrolja a munkalapon, hogy melyik weboldal hnyadik
tblzatt, illetve tblzatait jelltk ki. Ezrt pldul ha a harmincnapos idjrsi elrejelzs
hmrskleti adatai importljuk be egy meteorolgia weboldalrl, akkor az Excel munkalap frisstse az
aktulis adatok jbli letltst is eredmnyezi.
A webes importls azonban csak akkor mkdik, ha az importland adathoz ltezik kzvetlen webcm
s ha az adat tblzatos formban van trolva. Sok olyan dinamikus tartalom rhet el a weben, aminl
a weboldal tartalma gy vltozik meg, hogy az oldalhoz tartoz webcm vltozatlan marad. Tovbb az
utbbi vekben elterjedt webdesign a tblzatos adatokat nem az Excel ltal elvrt tblzatban jelenti
meg.

64

A fentiek miatt a webes import hasznlhatsga nmileg korltozott, azonban gy szmos esetben
hasznos tud lenni. Lssunk egy pldt. A boxofficemojo.com oldal az Amerikban bemutatott
mozifilmek bevteli adatait tesz elrhetv. A filmek klnbz adatait tartalmaz weboldalakhoz
szerencsre klnbz webcm tartozik. A filmek cme azonban nem kzvetlenl szerepel a webcmben,
hanem egy, a filmcmbl generlt azonostn keresztl. Pldul a "Bad Teacher" cm film azonostja a
"badteacher" s a film heti bontsban elrt bevteleit tartalmaz oldal webcm a kvetkez:
http://boxofficemojo.com/movies/?page=weekly&id=badteacher.htm. Hasonlan a "Harry Potter and
the Deathly Hallows, Part 2" cm film azonostja a "harrypotter72" kulcssz s a heti bontsban
elrhet
teljestmnye
a
filmnek
a
kvetkez
cmen
olvashat:
http://boxofficemojo.com/movies/?page=weekly&id=harrypotter72.htm
rjuk ezutn egy olyan Basic eljrst, ami elszr is az aktulis cellban lv filmazonosthoz ltrehoz
egy munkalapot az azonostval megegyez nvvel. Msodszor, az j munkalapba eltlti a film heti
bontsban elrt eredmnyt. Harmadszor, a film eredmnyt grafikus formban brzolja. Vgezetl
pedig az aktv cellt a makr meghvsa eltti llapotba lltja vissza.
Elsknt az aktulis cellban lv filmazonostval megegyez nev munkalapot kell ltrehoznunk. A
17-2. brn lthat kdrszletben elszr az id nev vltzban eltroljuk az aktv cellban lv
filmazonostt. Majd a currentSh vltzban az aktulis munkalapra mutat objektumot. A harmadik
sorban pedig egy j munkalapot adunk a munkafzethez s az j munkalapra mutat objektumot az sh
vltozban troljuk el. Ezek utn az sh munkalap nevt a filmazonostra cserljk. Vgezetl az j
munkalapot az eltrbe hozzuk. Vegyk szre, hogy az id egy hagyomnyos vltoz, amiben string
tpus rtket troltunk, mg a currentSh s az sh objektumvltoz, amiben egy munkalapra mutat
objektumot troltunk. Emiatt kellett az utbbi kt esetben Set paranccsal kezdeni az rtkadst.

17-2. bra. Kdrszlet az els rszfeladathoz

Msodik rszfeladatknt az j munkalapra le kell tlteni a filmhez tartoz heti bevteli eredmnyeket.
Vajon hogyan kell erre programot rni? Prblkozhatnnk a Sg tbogarszsval, de valsznleg igen
sokra jutnnk hasznlhat informcihoz. Jobban jrunk, ha rgztnk egy makrt, ami az egyik filmhez
65

elvgzi az adatimportlst. A rgztett makr forrskdja (17-3. bra) elsre nem tl sokat mond, de
nem is az a clunk, hogy pontosan milyen utastsokat rgztettnk. A clunk az, hogy valahogy
kitalljuk, hogy hogyan kell ezt a makrt gy mdostani, hogy ne csak a Bad Teacher cm film letltst
vezrelje, hanem tetszleges filmt. A forrskd tzetesebb tanulmnyozsa utn szrevehetjk, hogy a
film azonostja ktszer is szerepel a kdban. Az els elfordulskor radsul mg felfedezhetjk a
bevtelek heti bontst mutat weboldal webcmt is. Nincs teht ms dolgunk, mint a film
azonostjt tartalmaz stringeket gy mdostani, hogy az id vltz rtke szerepeljen benne a
badteacher helyett.
Ha s1 s s2 egy-egy string kifejezs, akkor az "s1 & s2" egy olyan kifejezs, ami a string sszefzsbl
addik. Teht a "mozi" & "film" eredmnye a "mozifilm" lesz. gy mr rhet a 17-4. brn lthat
msodik rszfeladatra adott programrszlet.
A webcim s a nev vltozkban eltroljuk a
filmazonostkbl generlt stringeket s ezeket hasznljuk fel az importlsi parancsok
argumentumaiban.

17-3. bra. A Bad Teach cm film importlsa sorn rgztett makr (egyszerstett) forrskdja

66

17-4. bra. Az id vltzban trolt filmazonosthoz kapcsold adatok importlsa (programrszlet)

A harmadik rszfeladat a letlttt adatok alapjn egy grafikon automatikus ellltsa. Az elzekben
hasznlt mdszerrel prblkozunk most is. Rgztnk egy makrt, ami a Bad Teacher film letlttt
adataibl (17-5. bra bal oldala) ellltja a krdses grafikont (17-5. bra jobb oldala) s megnzzk,
hogy mit kell rajta mdostani, hogy ltalnosan hasznlhat makrt kapjunk.

67

17-5. bra. A Bad Teacher cm filmhez importlt adatok s az azokbl ellltott grafikon

Figyeljk meg, hogy a grafikonon szakadsok tallhatk. Ez abbl addik, hogy a 15. s a 18. sor B
oszlopban nincs adat, mert valsznleg ezekben a hetekben a film nem szerepelt az els tven legtbb
bevtelt produkl filmje kztt.

17-6. bra. A grafikon generlshoz rgztett makr forrskdja

A rgztett makr forrskdja a 17-6. brn lthat. Mivel a grafikon forrsadatnak a teljes B oszlop
volt megadva (harmadik sor) ezrt a grafikon-generl eljrs nem fgg attl, hogy az adott filmet hny
htig vettettk az Amerikai mozik. gy a grafikon makr vltozatlanul felhasznlhat a harmadik
rszfeladat megoldshoz. El kell azonban mondani, hogy a grafikon makr korntsem univerzlis. Az
eljrs ugyanis felttelezi, hogy az eljrs meghvsa eltt az aktv munkalap sohasem tartalmazott
grafikont, mivel az jonnan ltrejtt grafikonra "Chart 1" nven hivatkozik.
Vgezetl az utols rszfeladat, hogy lltsuk az aktv cellt az eredeti llapotba, teht vltsunk vissza a
kiindulsi munkalapra. Erre a munkalapra mutat referencit a currentSh vltzban mr korbban
eltroltunk, gy ez a rszfeladat a currentSh.Select paranccsal megoldhat. sszefoglalva teht a
68

teljesen feladat megoldhat a 17-2., a 17-4., a 17-7. brn tallhat kdrszletek sszefzsvel s a
17-6. brn lthat eljrssal.

17-7. bra. A feladat megoldsnak utols kdrszlete

Legvgl azonban meg kell jegyezni, hogy a megrt eljrsunk sok filmazonostval helyesen fog
mkdni, de sajnos nem az sszessel. Ha jobban megnzzk a 17-3. brt, akkor szrevehetjk, hogy a
WebTables rtke "7". Ez azt jelenti, hogy az webes importls sorn a weboldal hetedik tblzatt
jelljk ki importlsra. Sajnos azonban a boxofficemojo tbb tblzatban adja meg a heti bevteleket,
ha a filmet tbb vben is vettettk. Teht pldul akkor, ha a filmet karcsony eltt mutattk be s
mg a kvetkez v janurjban is a mozik msorn volt. A programunk termszetesen mdosthat
lenne gy, hogy ilyen esetekben is helyesen mkdjn. A mdosts azonban didaktikai szempontbl
felesleges elbonyoltan a programot.

18.

Makrk halad hasznlata

Makr hozzrendelse nyomgombhoz. Szalagok illetve a gyorselrsi eszkztr testreszabsa. Sajt


munkalap-fggvny rsa
Makrkat ltrehozhatunk makrrgzts segtsgvel, egy korbban rgztett makr mdostsval, vagy
egyszeren egy argumentum nlkli Basic eljrs megrsval. Mivel az ltalunk eddig rt makrk nem
hasznltak paramtertadst azaz nem volt argumentumuk, ezrt ezek mind megjelentek a futtathat
makrk listjban. Minden makrhoz nem rendelhetnk gyorsbillentyt, mert elbb-utbb az ltalunk
is gyakran hasznlt beptett gyorsbillentyket lennnk knytelenek felldefinilni. Nha viszont a
futtathat makrk listjban is macers az a konkrt makrt, amit szeretnnk visszajtszani. Sokszor
mg az is kizkkenhet a munkamenetnkbl, ha az F8 gyorsbillentyt hasznljuk s nem a nem is a
fejleszteszkzk szalagrl hozzuk be a makrk listjt.
Makrk elkeresst, illetve futtatsnak elkezdst gyorsthatjuk gy is, hogy egy nyomgombot
helyezzk el a munkalapon, amire klikkelve egy elre meghatrozott makr futtatst kezdemnyezzk.
Az gy ltrehozhat nyomgomb is a 4. fejezetben megismert rlap-vezrlelemek egyike. A
vezrlelem beillesztsekor a 18-1. brn lthat ablak jelenik meg. Itt a vezrlelem csatolst
llthatjuk be. Nyomgomb esetn azonban a vezrlelemet nem egy cellhoz kell rendelni, hanem egy
69

makrhoz. j makrt hozhatunk ltre, vagy akr rgzthetnk is egyet. Illetve a ltez makrink kzl
vlaszthatunk ki egyet. Ksbbiekben a nyomgombot jobb egrkattintssal jellhetjk ki s
mdosthatjuk a csatolst. Ha a nyomgomb ki van jellve, akkor a balklikk utn szerkeszthetjk a
nyomgomb feliratt.
Nyomgombokhoz rendelt makrkat igazn akkor rdemes hasznlnunk, ha a makrnk nem univerzlis.
Azaz ha a makrnak a nyomgomb krnykn van rtelme. Egy makr tbb-kevsb univerzlis, ha
sok munkalapon, vagy sok cellbl indtva rtelmes mveletsort hajt vgre. Egyszer univerzlis
makrra lehet plda egy olyan makr, ami az aktv cella httrsznt a cella szomszdcellinak rke
alapjn hatrozza meg. Egy konkrt feladatra hasznlhat makrra lehetne plda olyan eljrs, ami a
3-1. brn lthat vralkoholszint-kiszmt tblzatnak kinullzza a fogyasztott mennyisgeket
tartalmaz oszlopt.

18-1. bra. Nyomgomb vezrlelem ltrehozsa s makrhoz val rendelse

Van lehetsg arra is, hogy egy munkafzethez egyni szalagokat adjunk hozz, vagy hogy a beptett
szalagokat szabjuk testre. Ezekhez a belltsi lehetsgekhez azonban nem lehet hozzfrni a
felhasznli interfszen keresztl. St, a Basic programozsi interfszen keresztl sincs erre lehetsg.
A szalagot mdostst csak a Basicnl jval bonyolultabb VSTO programozsi interfsz hasznlata teszt

70

lehetv. Illetve a szalag minimlis mdostst az Excel, Word fjlok bonyolult kzi szerkesztsvel is el
lehet rni. Ezeket a megoldsok azonban itt nem trgyaljuk.

18-2. bra. A gyorselrsi eszkztr testreszabsnak lpsei

Van lehetsgnk viszont az Excel, Word, PowerPoint bal fels sarkban tallhat gyorselrsi eszkztr
testreszabsra. A 18-2. bra bal oldaln lthat Tovbbi parancsokra jelenik meg a jobb oldalon lthat
rszletes belltsi ablak. A vlaszhat parancsok helynl lehet kivlasztani, hogy egy ltalunk rt
makrt szeretnnk az gyorselrsi eszkztrba felvenni. Ha a makrt az adott munkafzetbe mentjk le,
akkora a testreszabs vltoztatsait is a munkafzetbe rdemes lementeni, ahogy azt az bra jobb fels
sarban tallhat piros jells is mutatja. A Mdosts gombbal a makrhoz tartoz ikont llthatjuk be
s a makr megjelentett nevt. A 18-3. bra az j makrval kibvtett eszkztrat mutatja.

18-3. bra. A mdostott gyorselrsi eszkztr

Az eddig ltrehozott Basic eljrsaink fggetlenl attl, hogy mi magunk rtuk azokat, vagy csak
makrknt rgztettk azokat, csak arra nyjtottak lehetsget, hogy a cellk tartalmt az eljrs futsa
sorn mosstsuk. Ha forrsadatok megvltoztak s az eljrsunkkal kapott eredmnyek elavultak,
akkor jra le kellett volna futtatunk az eljrsunkat, hogy frisstsk a szmtsaink eredmnyt. Jllehet
71

a 11-3. bra mutatott arra pldt, hogy egy eljrs nem a cella rtkt, hanem a cellban trolt formult
mdostotta. Azonban Basic programbl nehzkes sszetettebb formulkat sszelltani. Radsul a
Basic programbl gy ltrehozott formulk nem lesznek nagyobb tudsak a grafikus interfszen
keresztl bert formulknl.
Szerencsre mi magunk is tudunk munkalapfggvnyeket ltrehozni. Ezeket a munkalapfggvnyeket
aztn ugyangy felhasznlhatjuk a munkalapjaink formuliban mint pldul a beptett MAX, SUM, HA
fggvnyeket.
Basicben az eljrsokhoz hasonlan kell fggvnyeket definilni. A fggvnyeket a Sub helyett a
Function kulcssz vezeti be s az End Function zrja. A fggvny visszatrsi rtket egy specilis
vltzba kell trolnunk, aminek a neve megegyezik a fggvny nevvel. A 18-4. brn lthat egyszer
fggvnynek kt argumentuma van. A fggvny visszatrsi rtke a paramterl kapott kt szm
sszege.

18-4. bra. Egyszer plda egy fggvny deklarcira

A fggvny egy modulban van definilva, akkor felhasznlhat mint munkalapfggvny. Erre mutat
pldt a 18-5. bra. A my nev fggvny egyetlen argumentumot vr: egy tartomny-kifejezst. A az r
tartomny minden celljra megvizsglja, hogy a cellban trolt formula egyenlsgjellel kezddik-e, ha
igen az azt jelenti, hogy a c cellban valban egy formula tallhat, ekkor nveli az f vltz rtkt.
Teht a fggvny az r tartomnyban tallhat formulk szmt adja vissza. Fontos, hogy a fggvny egy
modulban (a Module1-ben) tallhat, mert csak gy rhet el egy Excel munkalaprl. Ha az A1-es
cellban a "=my(B1:C1)" formula szerepel s a B1-es cella rtke 2 s a C1-ben az "=B1*2" formula
tallhat, akkor az A1-es cellban az 1 szmot fogjuk ltni.

72

18-5. bra. Basicben rt munkalapfggvny

Sajt munkalapfggvnyek rsa sokszor nagyon praktikus tud lenni, mert knyelmesen tesz elrhetv
specilis szmtsi fggvnyeket. Azonban a Basicben megrt munkalapfggvnyeknl klnsen fontos,
hogy hatkony, gyorsan lefut kdot rjunk. Ezek fggvnyek ugyanis mindent olyan cella frisstsekor
lefutnak, aminek a formulja a fggvnyt is tartalmazza.

19.

Elads ksztse

Elads ksztse PowerPointban, sablonok hasznlata, animcik. Excel adatok bemutatsa


PowerPointban: adatok csatolsi lehetsgei
A PowerPoint elads-szerkeszt program annyira knnyen s intuitven hasznlhat, hogy egy elads
fliasorozatnak elksztsekor a nagyobb fejtrst a flik tartalmnak kigondols okozza s nem a
kigondolt tartalom PowerPoint programban val megvalstsa. rdemes azonban tisztban lenni a
program kpessgeivel, hogy tudjuk a tartalmi tervezsnl, hogy milyen elemekbl ptkezetnk.
Az elads kinzett sablonokon keresztl tudjuk gyorsan megvltoztatni. Az elre elksztett
sablonokon kvl, magunk is sszegyjthetjk a megjelensi elemek mdostsai az gy nevezett
mintadia szerkesztsvel. A diaminta szerkesztsre a Nzet szalag Bemutatnzetek csoportjnak
Diaminta ikonjval tudunk vltani.
A dikon tallhat objektumokhoz animcit rendelhetnk. Egy animci lehet megjelensi vagy
eltnsi animci is. Az animci elindulhat automatikusan az elz animci utn, vagy az elad
egrklikkjre is. Ha nem ismerjk, rdemes egyszer vgignzni az sszes animlsi opcit.

73

Tegyk most fel, hogy Excelben vgzett szmtsainkbl szeretnnk egy eladst kszteni, hogy
munknk fbb eredmnyit bemutassuk a fnkeinknek. Tegyk fel tovbb, hogy minden hnapban az
adatok s a szmtsok aktualizlsa utn a munknkat ismtelten be kell mutatnunk. Tbb ton
indulhatunk el.
Elszr is a bemutatni kvnt adatokat a vglapon keresztl tmsolhatjuk az Excel munkalaprl a
PowerPoint dira. Ennek a megkzeltsnek az a htrnya, hogy ha vltozik az Excelben trolt
forrsadat, akkor jra t kell msolnunk a megvltozott adatokat a dikra.
Msodik lehetsgknt az egsz Excel fjlt begyazhatjuk az eladsba. Az adatok frisstst a
begyazott munkalapon vgezhetjk el. Itt a nehzsget az jelenti, hogy hogyan tudunk ugyanabbl a
begyazott dokumentumbl kt klnbz helyen kt rtket megjelenteni.
Vgezetl az Excel adatokat tudjuk csatolni (linkelni) az eladsunkhoz. Ebben az esetben, ha vltozik a
forrsadat, akkor az elads megnyitsakor lehetsgnk van az adatok frisstsre. Az Excelben
helyezznk a vglapra egy cellt vagy egy grafikont, majd PowerPoint Kezdlap szalagjn vlaszuk ki az
irnytott beilleszts csatolt vltozatt (19-1. bra). Ha a ksbbiekben jra megnyitjuk ezt az eladst,
akkor a 19-2. brn lthat felugr ablakon keresztl tudjuk egyetlen egy lpsben frissteni az sszes
csatolt objektumot.

19-1. bra. Az irnytott beilleszts kt lpse

74

19-2. bra. Csatolt adatok frisstse

20.

Alternatv programcsomagok: OpenOffice.org / LibreOffice

A szabad szoftver defincija. Lekts (Lock-in); lehetsges vdekezsek; Office fjlformtumok.


OpenOffice.org trtnelem. Dokumentumok on-line szerkesztse s trolsa a felhben (Google Docs)
Az eddigi fejezetek csak rvid betekintst nyjtottak az Excel s a tbbi Microsoft Office program
felhasznlsi lehetsgeibe, mgis ltszik, hogy egy igen nagy tuds s sokrt szoftvercsomagrl van
sz. A programcsomag hasznlatnak azonban vannak htrnyai. Ezek a htrnyok nem elssorban a
programcsomag hinyos funkcionalitsbl addik. Olvassuk csak bele a felhasznlst szablyoz
szoftverlicenc szerzdsbe, amely tbb ponton korltozza a felhasznlt. A szerzds elolvassnak els
lpeseknt nyomjuk meg az Excel bal fels ablakban tallhat Office gombot, majd az elugr men
aljn tallhat Excel belltsai gombot. Az Excel belltsai ablakban vlasszuk ki a baloldali menben
tallhat Forrsok menpontot, majd klikkeljnk a Nvjegy ikonra. A nvjegy panel kzepn tallhat
Microsoft szoftverlicenc-szerzds megtekintse linkre klikkelve vgl elolvashat a tbb mint hetven
oldal hossz szerzds.
A fenti licenccel szges ellenttben llnak a nyolcvanas vek elejn indult szabadszoftver-mozgalom
alapelvei. A szabad szoftver Richard Stalmann ltal kidolgozott defincija szerint egy szoftver, akkor
szabad szoftver (free software), ha megfelel a kvetkez ngy felttelnek. (0) A szoftver brmilyen clra
felhasznlhat. (1) Lehetsg van a szoftver mkdsnek szabad tanulmnyozsra s mdostsra.
(2) A szoftver szabadon terjesztet, tovbbadhat. (3) A felhasznlnak lehetsge van a szoftver
tovbbfejlesztsre s a fejleszts kzreadsra. A defincibl nem felttlenl kvetkezik, de a szabad
szoftverek szinte mindig ingyenesen le is tlthetek.
75

Tegyk fel, hogy egy feladat elltsra ltezik egy ingyenesen hozzfrhet szabad szoftver s egy
viszonylag drgn beszerezhet, a felhasznlsi feltteleket korltz szoftver is. Hogyan lehetsges
ebben az esetben nagyon sokan nem a szabad vltozatot hasznljk? Ennek oka legtbbszr az
gynevezett lekts vagy angolul a lock-in. Lektsrl akkor beszlnk, ha egy drga alternatvrl nem
ri meg vltani az olcsbb vltozatra, mert a vlts kltsge meghaladja az olcsbb alternatva
alacsonyabb beszerzsi s zemeltetsi kltsgeibl add megtakartsokat.
Milyen kltsge lehet egy szabad szoftverre val vltsnak? Nyilvn a beszerzsi kltsg a jelents.
Azonban pldul hiba alkalmas ugyanazon feladatok elvgzsre a kt szoftver, ha a felhasznli
felletk eltr, akkor esetleg jelents betantsi kltsggel kell szmolni. A msik tipikus tllsi
kltsg az adatmigrcibl addik. Ez sokszor jelentsebb kiadst jelent. A lektst teljes mrtkv is
teheti, ha a drgbb szoftverrel elmenet adatfjlokat a msikkal nem lehet megnyitni, vagy nem ltezik
az talaktst elvgz konvertl program.
Az adatformtumok miatti lektst ellen legjobban hasznlhat vdekezs a szabvnyosts. A
szabvnyostshoz kormnyzati szerepvllals, vagy a piaci szereplk sszefogsa szksges. Ha ltrejn
egy egysges, a felhasznlk ltal ignyelt adatformtum, akkor a szoftvergyrtk knytelenek a
formtumot tmogatni. A termkek kzti tjrhatsg a lekts megakadlyozsa piaci versenyt von
maga utn, ami az rak cskkenshez s innovatvabb termkek kifejlesztshez vezethet.
A lekts ellen vtkezhetnek a potencilis vevk gy is, hogy sszefogva fejlesztenek egy szabad
szoftvert vagy egy ilyen szoftver fejlesztst tmogatjk. Az sszefogs miatt az egy szereplre es
kltsgek cskkenek. A megfelel szabadszoftver-licenc pedig garantlja, hogy a szoftver fejlesztse s
maga a szoftver sem kerlhet konkurens vllalatok irnytsa al.
A Microsoft Office termkekrl val tllsnak is az adatformtumokon keresztli elkts volt a legfbb
gtja. Mra kt nagyom szabvnycsald ltezik az irodai programcsomagok fjlformtumra. Az egyik
az ODF, azaz a Open Document Format for Office Applications. A msik az OOXML, azaz a Office Open
XML formtum. Mindkt formtumot ms szabvnyostsi szervezetnl fogadtk el.
Az ODF formtumot tbb program is tmogatja (OpenOffice / LibreOffice, KOffice) s a Microsoft Office
is valamennyire. Az ilyen fjlok esetn a fjlok kiterjesztseire az .odt, .ods, .odp vgzdsek
hasznlatosak.

76

Az OOXML formtumnak a Microsoft az elsdleges tmogatja. A tipikusan hasznlatos kiterjesztsek a


.docx, .xlsx, s a pptx.
rdemes egy kicsit rszletesebben is megismerni a legjelentsebb szabad szoftveres irodai
programcsomag trtnett, mert benne a szabad szoftver projektet sok tipikus vonatkozst
megtalljuk. A StarDivision cget 1999-ben felvsrolta a Sun Microsystems s a cg StarOffice
termkbl ltrehozta annak a szabad szoftveres vltozatt Openfoofice.Org nven. Az org vgzds az
volt hivatott jelenteni, hogy a programot egy nylt kzssg fejleszti. Brki kldhetett be javtsokat,
illetve j programkdot a projekthez. Azonban a f fejleszt, tmogat egyrtelmen a Sun volt. A
kzssgi fejleszts kornt sem volt zkkenmentes, a kls fejlesztk s a Sun kztt sok srlds
htrltatta az egyttmkdst. 2010-ben aztn a Sunt felvsrolta az Oracle vllalat. A felvsrls
kvet bizonytalansgban a kzssgi fejlesztk gy lttk, hogy az Oracle-lel val egyttmkds
kiltsai mg rosszabbak lettek, ezrt az OpenOffice-bl legazva, az addig elkszlt programkdra
ptve egy sajt vltozatot kezdtek el fejleszteni. Az j vltozat nevnek a LibreOffice vlasztottk.
rdekes megfigyelni, hogy pont a szabadszoftveres licenc tette lehetv, hogy az OpenOffice-ra plve
egy msik szoftverprojekt el tudjon indulni. Tovbb bonyoltotta a helyzetet, hogy 2010 novemberben
az LibreOffice egyik legjelentsebb tmogatjt, a Novellt is felvsroltk. Az eredeti OpenOffice.org
programot az Oracle cskken tmogatsa mellett tneveztk Apache OpenOffice.orgra. A 2012-es lls
szerint a LibreOffice tnik a kt varins kzl letkpesebbnek. De jelenleg nem eldnthet krds,
hogy tartsan fenntarthat kt magas sznvonal, szabad szoftveres irodai programcsomag fejlesztse.
rdekes azonban megfigyelni, hogy az zleti letben gyakran bekvetkez jelents vltozsok ellenre is
folyamatos a szabad szoftver fejlesztse.
A LibreOffice programcsald szmos magyar vonatkozs funkcival rendelkezik. Magyar fejleszts a
helyesrs-ellenrz keretrendszer s a numbertext munkalap-fggvny is. A magyar helyesrsellenrz tbb felmrs szerint is jobb teljestmnyt nyjt a Microsoft Office beptett helyesrsellenrzjnl. Mivel a helyesrs-ellenrz is szabad szoftver, ms szoftverekbe is belekerlt, gy
pldul a Firefox bngsz is azt hasznlja. A numbertext munkalap-fggvnnyel szmokat tudunk
klnbz nyelven szveges formtumm alaktani. Ehhez hasonl funkcij munkalap-fggvny az
Excelben nem ltezik.
Az ODF s az OOXML formtumok kztt az tjrs mg nem tkletesen megoldott s a LibreOffice s
Microsoft Office sem rendelkezik teljesen azonos funkcionalitssal, ezrt a Microsoft Office estn
jelenleg is beszlhetnk bizonyos mrtk lektsrl.
77

Az Microsoft Office termkcsaldnak ms konkurense is akad. A klnbz on-line hasznlhat irodai


programok kzl a Google docs szolgltatsa a legnpszerbb. A szolgltatst biztost szoftver ugyan
nem szabad szoftver, de a webes szolgltats trtsmentesen ignybe lehet venni, s pldul a
dokumentumok egyidejleg trtn kzs szerkesztse rendkvl knyelmes. Webes szolgltatsok
esetn klnsen fontos, hogy mieltt a felhbe kltztetnk az adatainkat, vizsgljuk meg, hogy ez
mekkora lektssel jr.

78

You might also like