Влоокуп више критеријума са ВБА УДФ - примери кода ВБА

Влоокуп Више услова коришћењем ВБА

Размотрите следећу табелу података:

Стандардна функција Влоокуп у програму Екцел има следећи формат:

ВЛООКУП ("" Ознака ", Б6: Г12", 2, ФАЛСЕ)

Који ће вратити "Бровн".

Међутим, шта ако желимо да погледамо 2 или више услова, на пример име, презиме и године у горњој табели? Следећи УДФ нам то омогућава:

123456789101112131415161718192021222324252627282930313233343536373839 Функција ТхрееПараметерВлоокуп (Дата_Ранге Ас Ранге, Цол Ас Интегер, Параметер1 ас Вариант, Параметер2 ас Вариант, Параметер3 ас Вариант) Као варијанта'Декларишите променљивеДим ЦеллДим Цуррент_Ров Ас ИнтегерДим Но_Оф_Ровс_ин_Ранге Ас ИнтегерДим Но_оф_Цолс_ин_Ранге Ас ИнтегерДим Матцхинг_Ров Ас Интегер'подразумевано поставите одговор на Н/АТхрееПараметерВлоокуп = ЦВЕрр (клЕррНА)Матцхинг_Ров = 0Тренутни_ред = 1Но_Оф_Ровс_ин_Ранге = Подаци_Ранге.Ровс.ЦоунтНо_оф_Цолс_ин_Ранге = Подаци_Ранге.Цолумнс.Цоунт„Проверите да ли је Цол већи од броја колона у опсегуАко (Цол> Но_оф_Цолс_ин_Ранге) ТадаТхрееПараметерВлоокуп = ЦВЕрр (клЕррРеф)Крај АкоАко (Цол <= Но_оф_Цолс_ин_Ранге) ТадаУрадитиАко ((Дата_Ранге.Целлс (Цуррент_Ров, 1) .Валуе = Параметер1) И _(Податковни опсег. Ћелије (Тренутни_ред, 2). Вредност = Параметар2) И _(Податковни опсег. Ћелије (Тренутни_ред, 3). Вредност = Параметар3)) ЗатимМатцхинг_Ров = Тренутни_РедКрај АкоТренутни_ред = Тренутни_ред + 1Петља до ((Тренутни_ред = Нема_Оф_Ровс_ин_Ранге) Или (Матцхинг_Ров 0))Ако Матцхинг_Ров 0 ТадаТхрееПараметерВлоокуп = Дата_Ранге.Целлс (Матцхинг_Ров, Цол)Крај АкоКрај АкоЗавршна функција

Има следећу синтаксу:

ТхрееПараметерВлоокуп (Дата_Ранге, Цол, Параметер1, Параметер2, Параметер3)

Где:
• Дата_Ранге је опсег података
• Цол је цео број за потребну колону
• Параметар1, Параметер2 и Параметер3 су вриједности из прве три колоне

Тако да:

= ТхрееПараметерВлоокуп (Б6: Г12,6, "Марк", "Бровн", 7) враћа "Толвортх" јер се ово подудара са "Марк", "Бровн" и 7 и упућивањем на 6. колону

Имајте на уму да ће ова функција радити и са (динамичким) именованим опсезима:

= ТхрееПараметерВлоокуп (намед_ранге, 6, "Адриан", "Вхите", 7) ће вратити "Цхессингтон" где смо поставили именовани опсег "Намед_Ранге".

Ако Екцел не може да пронађе подударање, подразумевано се враћа „Н/А“. У ствари, функција претпоставља вредност Н/А на почетку, а затим се мења само када пронађе потпуно подударање.

Такође, ако вредност Цол премашује број колона, долази до грешке референце.

Кликните овде да бисте преузели .КСЛСМ датотеку за овај водич

wave wave wave wave wave