Makró-küldetés 1. rész - Vlookup VBA-ban

2016. július 10. - Office Guru

A következőkben egy olyan poszttal folytatom a blogot, ami önmagában roppantul egyszerű kis VBA-kódot tartalmaz, de a terveimben szereplő következő írások alapjául szolgál majd a benne lévő kis tudás - szóval, ha valaki úgy ítéli meg, hogy túlságosan egyszerű vagy értelmetlen az itteni írás, nyugodtan ignorálja.

A probléma, amit meg fogunk oldani, szintén nem túl komplex és nem is lenne hozzá szükség VBA-ra, hiszen a lentebb látható VLOOKUPot kellene csak végrehajtanunk a Település azonosító felhasználásával:

vlookup1.jpgAlt+F11 segítségével szépen menjünk csak át a VBA-editorunkba, hogy hozzá is láthassunk a rövid kódunk megalkotásához. Nem kell hozzá nagy ördöngösség, hogy belássuk, ugyanazt a Vlookup funkciót fogjuk használni VBA-ban is, mint ami elérhető a formulák közül.

Kezdésként létrehozunk két változót, Nevsor illetve Nevoszlop néven Integer típussal, később ezekben fogjuk tárolni majd a kitöltendő celláink sor- illetve oszlopszámait:

vlookup2.jpgEzután adjuk meg a kis programunknak, hogy melyik az a tábla, ahol az érték bekeresésének alapjául szolgáló azonosító van és melyik az a tábla, amelyikből felkeressük a szükséges értékünket ezen azonosító alapján - én ezeket Főtábla illetve Altábla néven neveztem el ezeket:

vlookup3.jpgAhogy látszik, a Főtáblánk azon táblánk azonosító oszlopa, amelyben az értékekre lesz szükségünk, az Altábla pedig az, ami az azonosítót és magát az értékeket tartalmazza. Folytatásként feltöltjük a Nevsor illetve Nevoszlop változóinkat, értelemszerűen az első, feltöltésre váró üres cellánk sor- illetve oszlopszámával:

vlookup4.jpgEgy lépés van még hátra, méghozzá egy For..Next ciklus, hiszen mit is fogunk csinálni? Minden egyes, Főtáblánkban található cellán haladjunk végig (For Each cl in Fotabla), majd az első Sheetünk (itt bármit megadhatunk persze) Nevsor illetve Nevoszlop által meghatározott cellája legyen egyenlő egy konkrét Vlookup függvénnyel:

Sheet1.Cells(Nevsor, Nevoszlop) = Application.WorksheetFunction.VLookup(cl, Altabla, 2, False)

Látható, hogy szimplán ugyanazt a funkciót meghívjuk, amit a Formulas képernyőről érünk el, majd megadjuk ugyanazok a paramétereket:

Lookup_value = értelemszerűen a Főtábla aktuális azonosítója
Table_array = ahol keressen, ez pedig az Altablank lesz, amelynek első oszlopa az azonosító
Col_index_num = hányadik oszlop értékét írja ki találat esetén
Range_lookup = csak pontos egyezést fogadjunk-e el

Hátra már csak az a lépés marad, hogy folytassuk a ciklusunkat, azaz egyrészt növeljük meg eggyel a kitöltendő celláknál a sorok számát, majd ugorjunk a Főtábla következő cellájára.

vlookup5.jpgAhogy látható, bármilyen plusz üzenettel megspékelhetjük még ezt a kis kódot, de ez nem is létfontosságú, a lényeg, hogy ha ezt most lefuttatjuk, meg is van az eredményünk:

vlookup6.jpgTehát megvan az első lépés, a következőkben az itt megszerzett ismeretre fogunk majd építeni, ahogy elkészítünk egy nagyobb lélegzetvételű (ám önmagában még mindig csak aprónak számító) makrót.

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr178877954

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.