Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Vlookup je základnou funkciou Excelu a stal sa dôležitou súčasťou spracovania údajov. Poskytuje niektoré funkcie, ktoré zvyčajne spájate s plnohodnotnou databázou.

Čo ak však chcete túto funkciu automatizovať? Áno, je to možné, najmä ak viete, ako používať natívny automatizačný jazyk Excelu, VBA. Tu je návod, ako môžete automatizovať funkciu vlookup v Excel VBA.

Syntax funkcie Vlookup

Syntax funkcie vlookup je pomerne jednoduchá, ale má štyri aspekty, na ktoré sa musíte zamerať, a to aj pri automatizácii v Excel VBA.

=vlookup (lookup_value, lookup_array, column_index, presná_zhoda/čiastočná_zhoda)

Argumenty funkcie majú nasledujúci význam:

  • vyhľadávaná_hodnota: Toto je primárna hodnota, ktorú chcete vyhľadať z vyhľadávacieho poľa.
  • lookup_array: Toto sú zdrojové údaje, ktoré parameter lookup_value použije ako referenciu.
  • column_index: Stĺpec, z ktorého sa má vrátiť hodnota.
  • presná_zhoda/čiastočná_zhoda: Na určenie typu zhody použite 0 alebo 1.
instagram viewer

Príprava dát

Táto množina údajov má dve časti: vyhľadávaciu tabuľku a cieľové údajové body.

Vyhľadávacia tabuľka pozostáva z troch stĺpcov, pričom údaje vypĺňajú polia Podkategória a Názov produktu:

Cieľová tabuľka obsahuje zodpovedajúce stĺpce bez údajov podkategórie alebo názvu produktu. Všimnite si, že hodnoty v stĺpci ID objednávky sa nachádzajú aj v rovnakom stĺpci vo vyhľadávacej tabuľke:

Používanie funkcie Vlookup priamo v tabuľke Excel

Môžete vyplniť cieľové stĺpce B a C použite funkciu vlookup programu Excel.

V bunke B2, zadajte nasledujúci vzorec:

=VLOOKUP(A2 $, $ F$3:$ H$17, 2, 0)

Podobne v cele C2, zadajte tento vzorec:

=VLOOKUP(A2 $, $ F$3:$ H$17, 3, 0)

Vzorec môžete presunúť nadol z bunky B2 až na koniec stĺpca, B17. Tento postup zopakujte aj pre stĺpec C. Hodnoty pre každý nasledujúci záznam sa automaticky aktualizujú v oboch stĺpcoch.

Hodnoty, ktoré odovzdáte do funkcie vlookup, sú:

  • A2: Vyhľadávacia hodnota je v tejto bunke.
  • F3:H17: Pozostáva z rozsahu vyhľadávania.
  • 2/3: Referenčné stĺpce, z ktorých sa má načítať hodnota.
  • 0: Označuje presnú zhodu.

Funkcia vyhľadávania Excel VBA

Funkcia vlookup má veľa podobností, či už ju používate priamo v Exceli alebo cez VBA. Či už ste analytik údajov, ktorý pracuje s riadkami údajov, alebo správca zásob, ktorý pravidelne pracuje s novými produktmi, môžete využiť vlookup.

Pri práci s dynamickým rozsahom vyhľadávania je vždy najlepšie zautomatizovať vzorce, aby ste sa vyhli opakovanému používaniu vzorcov v Exceli. Automatizáciou funkcie Vlookup vo VBA môžete vykonávať výpočty vo viacerých stĺpcoch jediným kliknutím.

1. Vykonajte požadované nastavenie

Začnite otvorením editora kódovania (stlačte Alt + F11 alebo prejdite na Vývojár tab) v novom excelovom zošite a pridajte modul na začatie písania kódu. V editore kódu pridajte nasledujúce riadky do hornej časti okna kódovania, aby ste vytvorili podprogram:

 Sub vlookup_fn1()End Sub

Podprogram je kontajner pre váš kód VBA a je rozhodujúci pre jeho úspešné spustenie. Alternatívou je vytvorte užívateľský formulár VBA aby bolo vaše používateľské rozhranie interaktívnejšie.

2. Deklarujte svoje premenné a vytvorte si referenčné rozsahy

Najprv musíte deklarovať premenné dátové typy pomocou Dim vyhlásenie:

 Dim i ako celé číslo, posledný riadok ako dlhý

Ďalej vytvorte a lastrow premennú, aby ste uložili hodnotu posledného vyplneného riadku vo vašom rozsahu vyhľadávania. Funkcia posledného riadku používa koniec (xldown) funkcia na výpočet odkazu na koncový riadok v rámci špecifikovaného rozsahu.

V tomto prípade premenná lastrow ukladá hodnotu posledného vyplneného riadka rozsahu vyhľadávania,17.

 lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row

Vo vyššie uvedenom príklade sa cieľová tabuľka rozširuje z A2:C17, pričom zdrojová tabuľka siaha od F2:H17. Vzorec vlookup prejde každú hodnotu uloženú v stĺpci A, vyhľadá ju v zdrojovej tabuľke a prilepí zodpovedajúce položky do stĺpcov B a C.

Pred skokom do cyklu však musíte hodnoty rozsahu uložiť do novej premennej (môj_rozsah), nasledovne:

 my_range = Sheets("Hárok2").Range("F3:H" & posledný riadok)

Musíte explicitne definovať počiatočný odkaz na bunku (F3) a odkaz na koncový stĺpec (H). VBA automaticky pripojí hodnotu riadka na dokončenie vyhľadávacieho poľa.

3. Napíšte slučku na cyklovanie cez každú hodnotu vyhľadávania

Pred napísaním cyklu definujte hodnotu počiatočného riadku, 2. Definovanie počiatočnej hodnoty pre vašu slučku je nevyhnutné pri práci s dynamickými prvkami. V cieľovej tabuľke je riadok 2 prvým riadkom údajov. Zmeňte túto hodnotu, ak vaše údaje začínajú v inom riadku.

 i = 2

Môžete použiť a do-pri slučku na spracovanie každého riadku, počnúc riadkom 2 a končiacim riadkom 17. Rovnako ako zvyšok kódu, aj tento aspekt je dynamický; cyklus bude bežať, kým podmienka nebude nepravdivá. Pomocou podmienky skontrolujte, či v prvej bunke aktuálneho riadka nie je prázdna hodnota.

 Do While len (Sheets("Sheet2").Cells (i, 1).value) <> 0

Vo vnútri slučky môžete zavolať funkciu VLookup na vyplnenie buniek:

 Listy("Hárok2").Bunky (i, 2).Hodnota = _ Aplikácia. Funkcia pracovného listu. VLookup (Hárok("Hárok2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Hárok2").Cells (i, 3).Hodnota = _ Aplikácia. Funkcia pracovného listu. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False)

Tieto príkazy nastavujú hodnotu buniek v aktuálnom riadku v stĺpcoch 2 a 3. Používajú Funkcia pracovného listu objekt volať VLookup funkciou, pri ktorej sa vyhľadá zodpovedajúca hodnota zo stĺpca 1. Tiež odovzdajú rozsah, ktorý ste definovali skôr, a index príslušného stĺpca, z ktorého získajú konečnú hodnotu.

Kód vlookup je pripravený, ale stále musíte zväčšiť premennú riadka zakaždým v slučke:

 i = i + 1

Zakaždým, keď sa slučka spustí, zvýši hodnotu i o 1. Pamätajte, že počiatočná hodnota riadka je 2 a prírastok nastane pri každom spustení cyklu. Použi slučka kľúčové slovo na nastavenie konca bloku kódu slučky.

Keď spustíte celý kód, vyplní výsledky v oboch stĺpcoch na základe hodnôt v zdrojovej tabuľke.

Tu je celý kód pre referenciu:

 Sub vlookup_fn1() Dim i As Integer lastrow = Sheets("Hárok2").Range("F3").End (xlDown).Row my_range = Sheets("Hárok2").Range("F3:H" & posledný riadok) i = 2 Urobiť, kým Len (Hárok("Hárok2"). Bunky (i, 1).Hodnota) <> 0 Pri chybe Obnoviť ďalšie hárky("Hárok2").Cells (i, 2).Hodnota = _ Aplikácia. Funkcia pracovného listu. VLookup (Hárok("Hárok2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Hárok2").Cells (i, 3).Hodnota = _ Aplikácia. Funkcia pracovného listu. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False) i = i + 1 LoopEnd Sub

4. Vytvorte tlačidlo na spustenie kódu

S kódom mimo cesty môžete vytvoriť tlačidlo v zošite programu Excel a spustiť ho jediným kliknutím. Vložte svoj preferovaný tvar na prázdny hárok programu Excel, kliknite naň pravým tlačidlom myši a kliknite na Priradiť makro možnosť.

V dialógovom okne vyberte názov podprogramu a kliknite na OK.

Keď chcete spustiť svoj kód, kliknite na tlačidlo a uvidíte, ako sa údaje okamžite naplnia.

Použitie Excel VBA na automatizáciu funkcií vyhľadávania

Excel VBA je flexibilný jazyk, ktorý je dobre vyladený tak, aby zjednodušil automatizáciu v rámci rôznych aspektov MS Excel. V MS Excel VBA existuje veľa možností, od automatizácie funkcií Excelu až po automatické vytváranie prepracovaných kontingenčných tabuliek.

Pri práci s rôznymi segmentmi Excelu môžete experimentovať s rôznymi možnosťami, ktoré vám uľahčia a zefektívnia život.