Vlookup je základní funkcí Excelu a stal se důležitou součástí zpracování dat. Poskytuje některé funkce, které obvykle spojujete s plnohodnotnou databází.
Co když ale chcete tuto funkci automatizovat? Ano, to je možné, zvláště pokud víte, jak používat nativní jazyk automatizace Excelu, VBA. Zde je návod, jak můžete automatizovat funkci vlookup v Excel VBA.
Syntaxe Vlookup
Syntaxe funkce vlookup je poměrně jednoduchá, ale má čtyři aspekty, na které se musíte zaměřit, i když ji automatizujete v Excel VBA.
=vlookup (lookup_value, lookup_array, column_index, přesné_shody/částečné_shody)
Argumenty funkce mají následující význam:
- vyhledávací_hodnota: Toto je primární hodnota, kterou chcete vyhledat z vyhledávacího pole.
- vyhledávací_pole: Toto jsou zdrojová data, která hodnota lookup_value použije jako referenci.
- column_index: Sloupec, ze kterého se má vrátit hodnota.
- přesná_shoda/částečná_shoda: K určení typu shody použijte buď 0 nebo 1.
Příprava dat
Tato datová sada má dvě části: vyhledávací tabulku a cílové datové body.
Vyhledávací tabulka se skládá ze tří sloupců, přičemž data vyplňují pole Podkategorie a Název produktu:
Cílová tabulka obsahuje odpovídající sloupce bez údajů o podkategorii nebo názvu produktu. Všimněte si, že hodnoty ve sloupci ID objednávky jsou také přítomny ve stejném sloupci ve vyhledávací tabulce:
Použití funkce Vlookup přímo v tabulce aplikace Excel
Chcete-li vyplnit cílové sloupce B a C, můžete použijte funkci vlookup aplikace Excel.
V buňce B2, zadejte následující vzorec:
=SVYHLEDAT(A2 $, $ F$3:$H$17, 2, 0)
Podobně v buňce C2, zadejte tento vzorec:
=SVYHLEDAT(A2 $, $ F$3:$H$17, 3, 0)
Vzorec můžete přetáhnout dolů z buňky B2 až na konec sloupce, B17. Tento postup opakujte také pro sloupec C. Hodnoty pro každý následující záznam se automaticky aktualizují v obou sloupcích.
Hodnoty, které předáte funkci vlookup, jsou:
- A2: Vyhledávací hodnota je v této buňce.
- F3:H17: Skládá se z rozsahu vyhledávání.
- 2/3: Referenční sloupce, ze kterých se má hodnota načíst.
- 0: Označuje přesnou shodu.
Funkce vyhledávání Excel VBA
Funkce vlookup má mnoho podobností, ať už ji používáte přímo v Excelu nebo přes VBA. Ať už jste datový analytik, který pracuje s řádky dat, nebo manažer zásob, který se pravidelně zabývá novými produkty, můžete využít vlookup.
Při práci s dynamickým rozsahem vyhledávání je vždy nejlepší vzorce automatizovat, abyste se vyhnuli opakovanému používání vzorců v Excelu. Automatizací funkce Vlookup ve VBA můžete provádět výpočty ve více sloupcích jediným kliknutím.
1. Proveďte požadované nastavení
Začněte otevřením editoru kódování (stiskněte Alt + F11 nebo přejděte na Vývojář tab) v novém sešitu aplikace Excel a přidejte modul, abyste mohli začít psát svůj kód. V editoru kódu přidejte do horní části okna kódování následující řádky, abyste vytvořili podprogram:
Sub vlookup_fn1()End Sub
Podprogram je kontejner pro váš kód VBA a je nezbytný pro jeho úspěšné spuštění. Alternativou je k vytvořit uživatelský formulář VBA aby bylo vaše uživatelské rozhraní interaktivnější.
2. Deklarujte své proměnné a vytvořte si referenční rozsahy
Nejprve musíte deklarovat proměnné datové typy pomocí Ztlumit prohlášení:
Dim i jako celé číslo, poslední řádek jako dlouhé
Dále vytvořte a lastrow proměnnou, chcete-li uložit hodnotu posledního vyplněného řádku ve vašem vyhledávacím rozsahu. Funkce posledního řádku používá konec (xldown) funkce pro výpočet odkazu na konec řádku v zadaném rozsahu.
V tomto případě proměnná lastrow ukládá poslední naplněnou hodnotu řádku rozsahu vyhledávání,17.
lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row
Ve výše uvedeném příkladu se cílová tabulka rozšiřuje z A2:C17, zatímco zdrojová tabulka sahá z F2:H17. Vzorec vlookup projde každou hodnotu uloženou ve sloupci A, vyhledá ji ve zdrojové tabulce a vloží odpovídající položky do sloupců B a C.
Před skokem do smyčky však musíte uložit hodnoty rozsahu do nové proměnné (můj_rozsah), jak následuje:
my_range = Sheets("List2").Range("F3:H" & lastrow)
Musíte explicitně definovat počáteční odkaz na buňku (F3) a odkaz na koncový sloupec (H). VBA automaticky připojí hodnotu řádku k dokončení vyhledávacího pole.
3. Napište smyčku pro procházení každé vyhledávací hodnoty
Před zápisem smyčky definujte hodnotu počátečního řádku, 2. Při práci s dynamickými prvky je zásadní definovat počáteční hodnotu pro vaši smyčku. V cílové tabulce je řádek 2 prvním řádkem dat. Změňte tuto hodnotu, pokud vaše data začínají na jiném řádku.
i = 2
Můžete použít a dělat, zatímco smyčka pro zpracování každého řádku, počínaje řádkem 2 a končícím řádkem 17. Stejně jako zbytek kódu je tento aspekt dynamický; smyčka poběží, dokud není podmínka nepravdivá. Pomocí podmínky zkontrolujte, zda v první buňce aktuálního řádku není prázdná hodnota.
Do While len (Sheets("Sheet2").Cells (i, 1).value) <> 0
Uvnitř smyčky můžete zavolat funkci VLookup k naplnění buněk:
Listy("List2").Buňky (i, 2).Hodnota = _ Aplikace. Funkce listu. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Aplikace. Funkce listu. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False)
Tyto příkazy nastavují hodnotu buněk v aktuálním řádku ve sloupcích 2 a 3. Používají Funkce listu objekt volat VLookup funkce, předáním odpovídající hodnoty ze sloupce 1 k vyhledání. Také předají rozsah, který jste definovali dříve, a index příslušného sloupce, aby získali konečnou hodnotu.
Kód vlookup je připraven, ale stále musíte zvýšit proměnnou řádku pokaždé, když kolem smyčky:
i = i + 1
Pokaždé, když smyčka běží, zvyšuje hodnotu i od 1. Pamatujte, že počáteční hodnota řádku je 2 a přírůstek nastane při každém spuštění smyčky. Použijte smyčka klíčové slovo pro nastavení konce bloku kódu smyčky.
Když spustíte celý kód, vyplní výsledky v obou sloupcích na základě hodnot ve zdrojové tabulce.
Zde je celý kód pro referenci:
Sub vlookup_fn1() Dim i As Integer lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row my_range = Sheets("Sheet2").Range("F3:H" & poslední řádek) i = 2 Udělat Zatímco Len (Listy("List2").Buňky (i, 1).Hodnota) <> 0 Při chybě Obnovit další listy("List2").Buňky (i, 2).Hodnota = _ Aplikace. Funkce listu. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Aplikace. Funkce listu. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False) i = i + 1 LoopEnd Sub
4. Vytvořte tlačítko pro spuštění kódu
S kódem mimo cestu můžete v sešitu aplikace Excel vytvořit tlačítko a spustit jej jediným kliknutím. Vložte preferovaný tvar na prázdný list aplikace Excel, klikněte na něj pravým tlačítkem myši a klikněte na Přiřadit makro volba.
V dialogovém okně vyberte název podprogramu a klikněte na OK.
Když chcete spustit svůj kód, klikněte na tlačítko a uvidíte, jak se data okamžitě naplní.
Použití Excel VBA k automatizaci vyhledávacích funkcí
Excel VBA je flexibilní jazyk, který je dobře vyladěn pro usnadnění automatizace v rámci různých aspektů MS Excel. V MS Excel VBA existuje mnoho možností, od automatizace funkcí Excelu až po automatické vytváření propracovaných kontingenčních tabulek.
Při práci s různými segmenty Excelu můžete experimentovat s různými možnostmi, jak si usnadnit a zefektivnit život.