Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Vlookup е основна функция в Excel и се превърна в жизненоважна част от обработката на данни. Той предоставя част от функционалността, която обикновено свързвате с пълноценна база данни.

Но какво ще стане, ако искате да автоматизирате тази функция? Да, това е възможно, особено ако знаете как да използвате родния език за автоматизация на Excel, VBA. Ето как можете да автоматизирате функцията vlookup в Excel VBA.

Синтаксисът на Vlookup

Синтаксисът на функцията vlookup е доста прост, но има четири аспекта, върху които трябва да се съсредоточите, дори когато я автоматизирате в Excel VBA.

=vlookup (търсена_стойност, търсен_масив, индекс_на_колона, точно_съвпадение/частично_съвпадение)

Аргументите на функцията имат следното значение:

  • търсена_стойност: Това е основната стойност, която искате да търсите от справочния масив.
  • търсене_масив: Това са изходните данни, които lookup_value ще използва като референция.
  • instagram viewer
  • колона_индекс: Колона, от която да се върне стойността.
  • точно_съвпадение/частично_съвпадение: Използвайте 0 или 1, за да определите типа на съвпадението.

Подготовка на данни

Този набор от данни има две части: справочна таблица и целеви точки от данни.

Справочната таблица се състои от три колони с данни, попълващи полетата Подкатегория и Име на продукта:

Таблицата на местоназначението има съвпадащи колони, без данни за подкатегория или име на продукт. Обърнете внимание, че стойностите в неговата колона ID на поръчка присъстват и в същата колона в справочната таблица:

Използване на Vlookup директно в електронна таблица на Excel

За да попълните колоните за местоназначение, B и C, можете използвайте функцията vlookup на Excel.

В клетка B2, въведете следната формула:

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

По същия начин в клетката C2, въведете тази формула:

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

Можете да плъзнете формулата надолу от клетка B2 до края на колоната, B17. Повторете този процес и за колона C. Стойностите за всеки следващ запис ще се актуализират автоматично и в двете колони.

Стойностите, които предавате на функцията vlookup са:

  • A2: Търсената стойност е в тази клетка.
  • F3:H17: Това се състои от обхвата за търсене.
  • 2/3: Референтните колони, от които да се извлече стойността.
  • 0: Обозначава точно съвпадение.

Функцията Vlookup на Excel VBA

Функцията vlookup има много прилики, независимо дали я използвате директно в Excel или чрез VBA. Независимо дали сте анализатор на данни, работещ с редове от данни, или мениджър на инвентара, който редовно работи с нови продукти, можете да се възползвате от използването на vlookup.

Когато работите с динамичен диапазон за търсене, винаги е най-добре да автоматизирате вашите формули, за да избегнете многократното прилагане на формули в Excel. Чрез автоматизиране на вашата функция Vlookup във VBA можете да извършвате изчисления с няколко колони с едно кликване.

1. Извършете необходимата настройка

Започнете, като отворите редактора за кодиране (натиснете Alt + F11 или навигирайте до Разработчик раздел) в нова работна книга на Excel и добавете модул, за да започнете да пишете своя код. В рамките на редактора на код добавете следните редове в горната част на прозореца за кодиране, за да създадете подпрограма:

 Sub vlookup_fn1()End Sub

Подпрограмата е контейнер за вашия VBA код и е от решаващо значение за успешното му изпълнение. Алтернатива е да създайте потребителски формуляр на VBA за да направите потребителския си интерфейс по-интерактивен.

2. Декларирайте вашите променливи и създайте вашите референтни диапазони

Първо, трябва да декларирате променливите типове данни, като използвате Dim изявление:

 Dim i като цяло число, lastrow като long

След това създайте a lastrow променлива, за да съхраните стойността на последния попълнен ред във вашия диапазон за търсене. Функцията lastrow използва край (xldown) функция за изчисляване на препратката към крайния ред в посочения диапазон.

В този случай променливата lastrow съхранява последната попълнена стойност на реда на диапазона за търсене,17.

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

В горния пример таблицата местоназначение се простира от A2:C17, докато изходната таблица се простира от F2:H17. Формулата за vlookup ще премине през всяка стойност, съхранена в колона A, ще я потърси в таблицата източник и ще постави съответстващите записи в колони B и C.

Въпреки това, преди да преминете към цикъла, трябва да съхраните стойностите на диапазона в нова променлива (моят_обхват), както следва:

 my_range = Sheets("Sheet2").Range("F3:H" & lastrow)

Трябва изрично да дефинирате препратката към началната клетка (F3) и препратката към крайната колона (з). VBA автоматично добавя стойността на реда, за да завърши масива за търсене.

3. Напишете цикъл, за да преминете през всяка търсена стойност

Преди да напишете цикъла, дефинирайте стойността на началния ред, 2. Определянето на начална стойност за вашия цикъл е от съществено значение, тъй като имате работа с динамични елементи. В целевата таблица ред 2 е първият ред от данните. Променете тази стойност, ако вашите данни започват в различен ред.

 i = 2

Можете да използвате a правя докато цикъл за обработка на всеки ред, започвайки от ред 2 и завършвайки на ред 17. Подобно на останалата част от кода, този аспект е динамичен; цикълът ще работи, докато условието стане невярно. Използвайте условието, за да проверите за непразна стойност в първата клетка на текущия ред.

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

Вътре в цикъла можете да извикате функцията VLookup, за да попълните клетките:

 Листове ("Лист2"). Клетки (i, 2). Стойност = _ Приложение. Работен листФункция. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Application. Работен листФункция. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False)

Тези инструкции задават стойността на клетките в текущия ред, съответно в колони 2 и 3. Те използват Работен листФункция обект за извикване на VLookup функция, предаваща съответната стойност от колона 1 за търсене. Те също предават диапазона, който сте дефинирали по-рано, и индекса на съответната колона, за да извлечете крайната стойност.

Vlookup кодът е готов, но все още трябва да увеличавате променливата на реда всеки път в цикъла:

 i = i + 1

Всеки път, когато цикълът се изпълнява, той увеличава стойността на аз от 1. Не забравяйте, че стойността на началния ред е 2 и нарастването се случва всеки път, когато цикълът се изпълнява. Използвай цикъл ключова дума, за да зададете края на кодовия блок на цикъла.

Когато стартирате целия код, той ще попълни резултатите и в двете колони въз основа на стойностите в изходната таблица.

Ето целия код за справка:

 Sub vlookup_fn1() Dim i As Integer lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row my_range = Sheets("Sheet2").Range("F3:H" & lastrow) i = 2 Do While Len (Sheets("Sheet2").Cells (i, 1).Value) <> 0 On Error Resume Next Sheets("Sheet2").Cells (i, 2).Value = _ Приложение. Работен листФункция. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 2, False) Sheets("Sheet2").Cells (i, 3).Value = _ Application. Работен листФункция. VLookup (Sheets("Sheet2") _ .Cells (i, 1).Value, my_range, 3, False) i = i + 1 LoopEnd Sub

4. Създайте бутон за изпълнение на кода

Като премахнете кода, можете да създадете бутон във вашата работна книга на Excel, за да я стартирате с едно щракване. Вмъкнете предпочитаната от вас форма в празен лист на Excel, щракнете с десния бутон върху него и щракнете върху Присвояване на макрос опция.

В диалоговия прозорец изберете името на вашата подпрограма и щракнете върху Добре.

Когато искате да стартирате кода си, щракнете върху бутона, за да видите как данните се попълват незабавно.

Използване на Excel VBA за автоматизиране на функциите за търсене

Excel VBA е гъвкав език, който е добре настроен да улеснява автоматизацията в различните аспекти на MS Excel. В MS Excel VBA съществуват много опции, от автоматизиране на функциите на Excel до автоматично създаване на сложни обобщени таблици.

Когато работите с различни сегменти на Excel, можете да експериментирате с различни опции, за да направите живота си по-лесен и по-ефективен.