Метод WorksheetFunction.VLookup — аналог функции ВПР в VBA Excel — поиск значения в таблице (диапазоне, массиве) по значению в первом столбце.
Метод WorksheetFunction.VLookup
WorksheetFunction.VLookup – это метод VBA Excel, который ищет значение в крайнем левом столбце таблицы (диапазона, двумерного массива) и возвращает значение ячейки (элемента массива), находящейся в указанном столбце той же строки. Метод WorksheetFunction.VLookup — аналог функции рабочего листа ВПР (вертикальный просмотр).
Синтаксис
Синтаксис метода WorksheetFunction.VLookup в VBA Excel:
1 |
WorksheetFunction.VLookup(Arg1, Arg2, Arg3, Arg4) |
Параметры
Описание параметров метода WorksheetFunction.VLookup:
Параметр | Описание |
---|---|
Arg1 (Lookup_value) | Обязательный параметр. Значение, которое необходимо найти в первом столбце таблицы. |
Arg2 (Table_array) | Обязательный параметр. Таблица с двумя или более столбцами данных. Используется ссылка на диапазон, имя диапазона или массив. |
Arg3 (Col_index_num) | Обязательный параметр. Номер столбца, значение из которого возвращается. |
Arg4 (Range_lookup) | Необязательный параметр. Логическое значение, указывающее, должен ли метод VLookup искать точное совпадение или приблизительное. |
Значения параметра Arg4 (Range_lookup), задающие точность сопоставления:
Значение | Точность сопоставления |
---|---|
True | Значение по умолчанию. Метод WorksheetFunction.VLookup находит точное или приблизительное совпадение Arg1 со значением в первом столбце. Если точное совпадение не найдено, используется самое большое значение, меньшее Arg1. Значения в первом столбце таблицы должны быть отсортированы по возрастанию. |
False | Метод WorksheetFunction.VLookup находит только точное совпадение. Сортировка значений первого столбца таблицы не требуется. Если точное совпадение не найдено, генерируется ошибка. |
Если значение параметра Arg1 является текстом, а Arg4=False, тогда в строке Arg1 можно использовать знаки подстановки (спецсимволы): знак вопроса (?) и звездочку (*). Знак вопроса заменяет один любой символ, а звездочка соответствует любой последовательности символов. Чтобы знак вопроса (?) и звездочка (*) обозначали сами себя, перед ними указывается тильда (~).
Примеры
Примеры обкатывались на следующей таблице:
Поиск значения в таблице
1 2 3 4 5 |
Sub Primer1() Dim x x = "Смартфон: " & WorksheetFunction.VLookup(7, Range("A2:D11"), 2, False) MsgBox x End Sub |
Результат работы кода:
Поиск значения в массиве
1 2 3 4 5 6 7 8 |
Sub Primer2() Dim x, y x = Range("A2:D11") y = "Смартфон: " & WorksheetFunction.VLookup(8, x, 2, False) & vbNewLine _ & "Разрешение экрана: " & WorksheetFunction.VLookup(8, x, 3, False) & vbNewLine _ & "Емкость аккумулятора: " & WorksheetFunction.VLookup(8, x, 4, False) & " мАч" MsgBox y End Sub |
Результат работы кода:
Да, здесь можно немного улучшить структуру кода, применив оператор With...End With
:
1 2 3 4 5 6 7 8 9 10 |
Sub Primer3() Dim x, y x = Range("A2:D11") With WorksheetFunction y = "Смартфон: " & .VLookup(8, x, 2, False) & vbNewLine _ & "Разрешение экрана: " & .VLookup(8, x, 3, False) & vbNewLine _ & "Емкость аккумулятора: " & .VLookup(8, x, 4, False) & " мАч" End With MsgBox y End Sub |
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.
Здравствуйте, почему-то нигде не сказано, что если в качестве Arg1 использовать цифры, то метод работать не будет. Возникает куча ошибок и приходится формулами изменять данные на число-как-текст иначе ничего не выходит.
Здравствуйте, Денис!
Во всех примерах этой статьи в качестве Arg1 используются цифры — метод работает.
Обсуждение закрыто.