Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Vlookup — важная функция в Excel, которая стала жизненно важной частью обработки данных. Он предоставляет некоторые функции, которые вы обычно связываете с полноценной базой данных.

Но что, если вы хотите автоматизировать эту функцию? Да, это возможно, особенно если вы знаете, как использовать собственный язык автоматизации Excel, VBA. Вот как вы можете автоматизировать функцию vlookup в Excel VBA.

Синтаксис ВПР

Синтаксис функции vlookup довольно прост, но он имеет четыре аспекта, на которых вы должны сосредоточиться, даже при автоматизации в Excel VBA.

=vlookup (искомое_значение, искомый_массив, индекс_столбца, точное_совпадение/частичное_совпадение)

Аргументы функции имеют следующий смысл:

  • искомое_значение: Это основное значение, которое вы хотите найти в массиве поиска.
  • искомый_массив: Это исходные данные, которые lookup_value будет использовать в качестве ссылки.
  • instagram viewer
  • столбец_индекс: Столбец, из которого нужно вернуть значение.
  • точное_соответствие/частичное_соответствие: Используйте либо 0, либо 1, чтобы определить тип соответствия.

Подготовка данных

Этот набор данных состоит из двух частей: таблицы поиска и точек данных назначения.

Таблица поиска состоит из трех столбцов с данными, заполняющими поля «Подкатегория» и «Название продукта»:

В целевой таблице есть соответствующие столбцы без данных о подкатегориях или названиях продуктов. Обратите внимание, что значения в его столбце идентификатора заказа также присутствуют в том же столбце в таблице поиска:

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

Чтобы заполнить столбцы назначения, B и C, вы можете использовать функцию vlookup в Excel.

В ячейке Би 2, введите следующую формулу:

=ВПР($A2, $F$3:$17, 2, 0)

Аналогично в ячейке С2, введите эту формулу:

=ВПР($A2, $F$3:$17, 3, 0)

Вы можете перетащить формулу вниз из ячейки B2 до конца столбца, B17. Повторите этот процесс и для столбца C. Значения для каждой последующей записи будут автоматически обновляться в обоих столбцах.

Значения, которые вы передаете функции vlookup:

  • А2: значение поиска находится в этой ячейке.
  • Ф3:Н17: состоит из диапазона поиска.
  • 2/3: опорные столбцы, из которых нужно получить значение.
  • 0: Обозначает точное совпадение.

Функция Vlookup в Excel VBA

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

При работе с динамическим диапазоном поиска всегда лучше автоматизировать свои формулы, чтобы избежать многократного применения формул в Excel. Автоматизировав функцию Vlookup в VBA, вы можете выполнять вычисления с несколькими столбцами одним щелчком мыши.

1. Выполните необходимую настройку

Начните с открытия редактора кодирования (нажмите Альт + F11 или перейдите к Разработчик tab) в новой книге Excel и добавьте модуль, чтобы начать писать свой код. В редакторе кода добавьте следующие строки вверху окна кодирования, чтобы создать подпрограмму:

 Sub vlookup_fn1()End Sub

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

2. Объявите свои переменные и создайте свои контрольные диапазоны

Во-первых, вам нужно объявить переменные типы данных, используя Тусклый заявление:

 Dim i как целое, lastrow как long

Далее создайте последний ряд переменная, чтобы сохранить значение последней заполненной строки в пределах диапазона поиска. Функция lastrow использует конец (xldown) функция для вычисления ссылки на конечную строку в указанном диапазоне.

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

 lastrow = Листы("Лист2").Range("F3").Конец (xlDown).Строка

В приведенном выше примере целевая таблица простирается от А2: С17, а исходная таблица простирается от Ф2:Н17. Формула vlookup будет перебирать каждое значение, хранящееся в столбце A, искать его в исходной таблице и вставлять совпадающие записи в столбцы B и C.

Однако, прежде чем переходить к циклу, вы должны сохранить значения диапазона в новой переменной (мой_диапазон), следующее:

 my_range = Листы("Лист2").Range("F3:H" и последняя строка)

Вы должны явно определить начальную ссылку на ячейку (F3) и ссылку на конец столбца (ЧАС). VBA автоматически добавляет значение строки для завершения массива поиска.

3. Напишите цикл для циклического перебора каждого значения поиска

Перед записью цикла определите начальное значение строки, 2. Определение начального значения для вашего цикла очень важно, поскольку вы имеете дело с динамическими элементами. В целевой таблице строка 2 является первой строкой данных. Измените это значение, если ваши данные начинаются с другой строки.

 я = 2

Вы можете использовать делать пока цикла для обработки каждой строки, начиная со строки 2 и заканчивая строкой 17. Как и остальной код, этот аспект является динамическим; цикл будет выполняться до тех пор, пока условие не станет ложным. Используйте условие для проверки наличия непустого значения в первой ячейке текущей строки.

 Делать пока len (Листы("Лист2").Ячейки (i, 1).значение) <> 0

Внутри цикла вы можете вызвать функцию VLookup для заполнения ячеек:

 Листы("Лист2").Ячейки (i, 2).Значение = _ Приложение. Рабочий листФункция. ВПР (Листы("Лист2") _ .Ячейки (i, 1).Значение, мой_диапазон, 2, Ложь) Листы("Лист2").Ячейки (i, 3).Значение = _ Приложение. Рабочий листФункция. ВПР (Листы ("Лист2") _ .Ячейки (i, 1).Значение, мой_диапазон, 3, Ложь)

Эти операторы устанавливают значение ячеек в текущей строке в столбцах 2 и 3 соответственно. Они используют Рабочий листФункция объект для вызова ВПР функция, передавая соответствующее значение из столбца 1 для поиска. Они также передают диапазон, который вы определили ранее, и индекс соответствующего столбца, из которого извлекается окончательное значение.

Код vlookup готов, но вам все еще нужно увеличивать переменную строки каждый раз в цикле:

 я = я + 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 Делать, пока Len (Листы ("Лист2"). Ячейки (i, 1). Значение) <> 0 При ошибке Возобновить следующие листы ("Лист2"). Ячейки (i, 2). Значение = _ Приложение. Рабочий листФункция. ВПР (Листы("Лист2") _ .Ячейки (i, 1).Значение, мой_диапазон, 2, Ложь) Листы("Лист2").Ячейки (i, 3).Значение = _ Приложение. Рабочий листФункция. VLookup (Листы ("Лист2") _ .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 вы можете экспериментировать с различными вариантами, чтобы сделать свою жизнь проще и эффективнее.