A Vlookup az Excel alapvető funkciója, és az adatfeldolgozás létfontosságú részévé vált. Biztosít néhány olyan funkciót, amelyet általában egy teljes körű adatbázishoz társíthat.
De mi van, ha automatizálni szeretné ezt a funkciót? Igen, ez lehetséges, különösen, ha tudja, hogyan kell használni az Excel natív automatizálási nyelvét, a VBA-t. Így automatizálhatja a vlookup funkciót az Excel VBA-ban.
A Vlookup szintaxisa
A vlookup függvény szintaxisa meglehetősen egyszerű, de négy szempontra kell összpontosítania, még akkor is, ha az Excel VBA-ban automatizálja.
=vlookup (keresési_érték, keresési_tömb, oszlopindex, pontos egyezés/részleges egyezés)
A függvény argumentumainak jelentése a következő:
- lookup_value: Ez az elsődleges érték, amelyet meg szeretne keresni a keresési tömbből.
- lookup_array: Ez a forrásadat, amelyet a lookup_value referenciaként fog használni.
- oszlop_index: Oszlop, amelyből visszaadja az értéket.
- pontos_egyezés/részleges_egyezés: Használja a 0-t vagy az 1-et az egyezés típusának meghatározásához.
Adatok előkészítése
Ez az adatkészlet két részből áll: egy keresési táblázatból és a cél adatpontokból.
A keresési táblázat három oszlopból áll, amelyekben adatok töltik fel az Alkategória és a Terméknév mezőket:
A céltáblázatban vannak egyező oszlopok, alkategória vagy terméknév adatok nélkül. Ne feledje, hogy a Rendelési azonosító oszlopában lévő értékek a keresőtábla ugyanabban az oszlopában is megtalálhatók:
A Vlookup közvetlen használata Excel-táblázatban
A céloszlopok (B és C) kitöltéséhez megteheti használja az Excel vlookup funkcióját.
A cellában B2, írja be a következő képletet:
=VLOOKUP($A2, $F$3:$H$17, 2, 0)
Hasonlóképpen a cellában C2, írja be ezt a képletet:
=VLOOKUP($A2, $F$3:$H$17, 3, 0)
A képletet lefelé húzhatja a B2 cellából az oszlop végéig, a B17-ig. Ismételje meg ezt a folyamatot a C oszlopra is. Az egyes következő bejegyzések értékei automatikusan frissülnek mindkét oszlopban.
A vlookup függvénynek átadott értékek a következők:
- A2: A keresési érték ebben a cellában található.
- F3:H17: Ez a keresési tartományból áll.
- 2/3: Azok a referenciaoszlopok, amelyekből az értéket le kell kérni.
- 0: Pontos egyezést jelöl.
Az Excel VBA Vlookup funkciója
A vlookup funkciónak sok hasonlósága van, akár közvetlenül Excelben, akár VBA-n keresztül használja. Akár adatsorokkal foglalkozó adatelemző, akár rendszeresen új termékekkel foglalkozó készletmenedzser, a vlookup előnyeit élvezheti.
Amikor dinamikus keresési tartományt használ, mindig a legjobb, ha automatizálja a képleteket, hogy elkerülje a képletek ismételt alkalmazását az Excelben. A Vlookup funkció automatizálásával a VBA-ban egyetlen kattintással többoszlopos számításokat hajthat végre.
1. Hajtsa végre a szükséges beállítást
Kezdje a kódszerkesztő megnyitásával (nyomja meg a Alt + F11 vagy navigáljon a Fejlesztő lapon) egy új Excel-munkafüzetben, és adjon hozzá egy modult a kód írásának megkezdéséhez. A kódszerkesztőben adja hozzá a következő sorokat a kódolóablak tetejéhez egy alrutin létrehozásához:
Sub vlookup_fn1()End Sub
Az alrutin a VBA-kód tárolója, és elengedhetetlen a sikeres futtatáshoz. Alternatíva az hozzon létre egy VBA felhasználói űrlapot hogy interaktívabbá tegye a felhasználói felületet.
2. Deklarálja változóit, és hozza létre a referenciatartományait
Először is deklarálnia kell a változó adattípusokat a Homályos nyilatkozat:
Dim i egész számként, utolsó sor hosszú
Ezután hozzon létre a utolsó sor változó, a keresési tartományon belüli utolsó kitöltött sor értékének tárolásához. Az utolsósor függvény a vége (xldown) függvény a végsor hivatkozásának kiszámításához a megadott tartományon belül.
Ebben az esetben a lastrow változó tárolja a keresési tartomány utoljára kitöltött sorértékét,17.
lastrow = Lapok("Lap2").Tartomány("F3").End (xlDown).Sor
A fenti példában a céltábla innen terjed ki A2:C17, míg a forrástábla innen terjed ki F2:H17. A vlookup képlet végigfut minden, az A oszlopban tárolt értéken, megkeresi a forrástáblázatban, és beilleszti a megfelelő bejegyzéseket a B és C oszlopokba.
Mielőtt azonban a ciklusra ugorna, el kell tárolnia a tartomány értékeit egy új változóban (my_range), alábbiak szerint:
my_range = Lapok("Lap2").Tartomány("F3:H" & utolsó sor)
Explicit módon meg kell határoznia a kezdő cella hivatkozást (F3) és az utolsó oszlop hivatkozása (H). A VBA automatikusan hozzáfűzi a sor értékét a keresési tömb befejezéséhez.
3. Írjon egy hurkot az egyes keresési értékek áthaladásához
A ciklus írása előtt adja meg a kezdősor értékét, 2. A ciklus kezdőértékének meghatározása elengedhetetlen, mivel dinamikus elemekkel foglalkozik. A céltáblázatban a 2. sor az adatok első sora. Módosítsa ezt az értéket, ha az adatok egy másik sorban kezdődnek.
i = 2
Használhatja a csinálni, miközben hurok az egyes sorok feldolgozásához, a 2. sortól kezdve és a 17. sorig. A kód többi részéhez hasonlóan ez a szempont dinamikus; a ciklus addig fut, amíg a feltétel hamis lesz. A feltétel segítségével ellenőrizze, hogy az aktuális sor első cellájában van-e nem üres érték.
Do While len (Sheets("Sheet2").Cells (i, 1).érték) <> 0
A hurkon belül meghívhatja a VLookup függvényt a cellák feltöltéséhez:
Sheets("Sheet2").Cellák (i, 2).Érték = _ Alkalmazás. MunkalapFunkció. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Érték, saját_tartomány, 2, False) Sheets("Sheet2").Cellák (i, 3).Érték = _ Alkalmazás. MunkalapFunkció. VLookup (Sheets("Sheet2") _ .Cells (i, 1). Value, my_range, 3, False)
Ezek az utasítások az aktuális sor celláinak értékét állítják be, a 2. és 3. oszlopban. Használják a MunkalapFunkció kifogást hívni a VLookup függvényt, átadva a megfelelő értéket az 1. oszlopból a kereséshez. Ezenkívül átadják a korábban meghatározott tartományt és a vonatkozó oszlop indexét, amelyből lekérik a végső értéket.
A vlookup kód készen áll, de továbbra is növelnie kell a sorváltozót minden alkalommal a ciklus körül:
i = i + 1
Minden alkalommal, amikor a hurok fut, növeli az értékét én által 1. Ne feledje, hogy a kezdősor értéke 2, és a növekedés minden alkalommal megtörténik, amikor a ciklus fut. Használja a hurok kulcsszó a ciklus kódblokkjának végének beállításához.
A teljes kód futtatásakor a forrástábla értékei alapján mindkét oszlopban feltölti az eredményeket.
Íme a teljes kód referenciaként:
Sub vlookup_fn1() Dim i As Integer lastrow = Sheets("Sheet2").Tartomány("F3").End (xlDown).Row my_range = Sheets("Sheet2").Tartomány("F3:H" & utolsó sor) i = 2 Do While Len (Sheets("Lap2").Cellák (i, 1).Érték) <> 0 Hiba esetén Folytatás a következő lapok("Sheet2").Cellák (i, 2).Érték = _ Alkalmazás. MunkalapFunkció. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Érték, saját_tartomány, 2, False) Sheets("Sheet2").Cellák (i, 3).Érték = _ Alkalmazás. MunkalapFunkció. VLookup (Sheets("Sheet2") _ .Cells (i, 1). Value, my_range, 3, False) i = i + 1 LoopEnd Sub
4. Hozzon létre egy gombot a kód futtatásához
Ha a kód nincs útban, létrehozhat egy gombot az Excel-munkafüzetben, amely egyetlen kattintással futtatható. Szúrja be a kívánt alakzatot egy üres Excel lapra, kattintson rá jobb gombbal, majd kattintson a ikonra Makró hozzárendelése választási lehetőség.
A párbeszédpanelen válassza ki az alrutin nevét, majd kattintson a gombra rendben.
Ha futtatni szeretné a kódot, kattintson a gombra, hogy megtekinthesse, hogyan jelennek meg azonnal az adatok.
Az Excel VBA használata a keresési funkciók automatizálására
Az Excel VBA egy rugalmas nyelv, amely jól hangolt az automatizálás megkönnyítésére az MS Excel különböző oldalain belül. Az MS Excel VBA-ban számos lehetőség létezik, az Excel-funkciók automatizálásától a bonyolult pivot táblák automatikus létrehozásáig.
Amikor különböző Excel-szegmensekkel dolgozik, különféle lehetőségekkel kísérletezhet, hogy megkönnyítse és hatékonyabbá tegye életét.