Влоокуп је суштинска функција у Екцел-у и постала је витални део обраде података. Пружа неке од функционалности које обично повезујете са пуном базом података.
Али шта ако желите да аутоматизујете ову функцију? Да, то је могуће, посебно ако знате како да користите Екцел-ов изворни језик аутоматизације, ВБА. Ево како можете да аутоматизујете функцију влоокуп у Екцел ВБА.
Синтакса Влоокуп-а
Синтакса функције влоокуп је прилично једноставна, али има четири аспекта на која се морате фокусирати, чак и док је аутоматизујете у Екцел ВБА.
=влоокуп (лоокуп_валуе, лоокуп_арраи, цолумн_индек, екацт_матцх/партиал_матцх)
Аргументи функције имају следеће значење:
- лоокуп_валуе: Ово је примарна вредност коју желите да потражите из низа претраживања.
- лоокуп_арраи: Ово су изворни подаци које ће лоокуп_валуе користити као референцу.
- индекс_колоне: Колона за враћање вредности.
- тачно_подударање/делимично_подударање: Користите 0 или 1 да одредите тип подударања.
Припрема података
Овај скуп података има два дела: табелу за претраживање и одредишне тачке података.
Табела за тражење се састоји од три колоне, са подацима који попуњавају поља Поткатегорија и Назив производа:
Одредишна табела има одговарајуће колоне, без података о подкатегорији или називу производа. Имајте на уму да су вредности у његовој колони ИД поруџбине такође присутне у истој колони у табели за претрагу:
Директно коришћење Влоокуп-а у Екцел табели
Да бисте попунили одредишне колоне, Б и Ц, можете користите Екцел-ову функцију влоокуп.
У ћелији Б2, унесите следећу формулу:
=ВЛООКУП($А2, $Ф$3:$Х$17, 2, 0)
Слично, у ћелији Ц2, унесите ову формулу:
=ВЛООКУП($А2, $Ф$3:$Х$17, 3, 0)
Можете превући формулу надоле од ћелије Б2 до краја колоне, Б17. Поновите овај поступак и за колону Ц. Вредности за сваки следећи унос ће се аутоматски ажурирати у обе колоне.
Вредности које прослеђујете функцији влоокуп су:
- А2: Вредност тражења је у овој ћелији.
- Ф3:Х17: Ово се састоји од опсега тражења.
- 2/3: Референтне колоне из којих се преузима вредност.
- 0: Означава тачно подударање.
Екцел ВБА функција Влоокуп
Функција влоокуп има много сличности без обзира да ли је користите директно у Екцел-у или преко ВБА. Било да сте аналитичар података који се бави редовима података или менаџер залиха који се редовно бави новим производима, можете користити влоокуп.
Када радите са динамичким опсегом тражења, увек је најбоље да аутоматизујете своје формуле како бисте избегли стално примену формула у Екцел-у. Аутоматизацијом ваше Влоокуп функције у ВБА, можете извршити прорачуне у више колона једним кликом.
1. Извршите потребно подешавање
Започните отварањем уређивача кодирања (притисните Алт + Ф11 или идите на Девелопер таб) у новој Екцел радној свесци и додајте модул за почетак писања кода. У оквиру уређивача кода додајте следеће редове на врх прозора за кодирање да бисте креирали подрутину:
Суб влоокуп_фн1()Крај под
Подрутина је контејнер за ваш ВБА код и кључна је за његово успешно покретање. Алтернатива је да креирајте ВБА кориснички образац да би ваш кориснички интерфејс био интерактивнији.
2. Декларисајте своје варијабле и креирајте своје референтне опсеге
Прво, потребно је да декларишете променљиве типове података користећи Замутити изјава:
Дим и као цео број, последњи као дуг
Затим креирајте а ластров променљиву, да сачувате вредност последњег попуњеног реда у оквиру вашег опсега претраживања. Функција ластров користи крај (клдовн) функција за израчунавање референце за крајњи ред унутар наведеног опсега.
У овом случају, променљива последњег реда чува последњу попуњену вредност реда опсега претраживања,17.
ластров = Схеетс("Схеет2").Ранге("Ф3").Енд (клДовн).Ров
У горњем примеру, одредишна табела се протеже од А2:Ц17, док се изворна табела протеже од Ф2:Х17. Влоокуп формула ће проћи кроз сваку вредност сачувану у колони А, потражити је у изворној табели и налепити одговарајуће уносе у колоне Б и Ц.
Међутим, пре него што пређете на петљу, морате да сачувате вредности опсега унутар нове променљиве (ми_ранге), као што следи:
ми_ранге = Схеетс("Схеет2").Ранге("Ф3:Х" & ластров)
Морате експлицитно дефинисати почетну референцу ћелије (Ф3) и референцу крајње колоне (Х). ВБА аутоматски додаје вредност реда да би довршио низ претраживања.
3. Напишите петљу за циклус кроз сваку вредност тражења
Пре писања петље, дефинишите почетну вредност реда, 2. Дефинисање почетне вредности за вашу петљу је од суштинског значаја јер имате посла са динамичким елементима. У одредишној табели, ред 2 је први ред података. Промените ову вредност ако ваши подаци почињу у другом реду.
и = 2
Можете користити а до-док петља за обраду сваког реда, почевши од реда 2 и завршавајући у реду 17. Као и остатак кода, овај аспект је динамичан; петља ће се изводити све док услов не буде нетачан. Користите услов да проверите да ли у првој ћелији тренутног реда није празна вредност.
Уради Док лен (Схеетс("Схеет2").Ћелије (и, 1).валуе) <> 0
Унутар петље можете позвати функцију ВЛоокуп да бисте попунили ћелије:
Схеетс("Схеет2").Ћелије (и, 2).Вредност = _ Апликација. ВорксхеетФунцтион. ВЛоокуп (Схеетс("Схеет2") _ .Целлс (и, 1).Валуе, ми_ранге, 2, Фалсе) Схеетс("Схеет2").Целлс (и, 3).Валуе = _ Апплицатион. ВорксхеетФунцтион. ВЛоокуп (Схеетс("Схеет2") _ .Целлс (и, 1).Валуе, ми_ранге, 3, Фалсе)
Ови искази постављају вредност ћелија у тренутном реду, у колонама 2 и 3, респективно. Они користе ВорксхеетФунцтион објект за позивање ВЛоокуп функцију, прослеђујући одговарајућу вредност из колоне 1 за претрагу. Они такође прослеђују опсег који сте раније дефинисали и индекс релевантне колоне за преузимање коначне вредности.
Влоокуп код је спреман, али и даље морате да повећате променљиву реда сваки пут око петље:
и = и + 1
Сваки пут када се петља покрене, она повећава вредност и од 1. Запамтите, почетна вредност реда је 2, а повећање се дешава сваки пут када се петља покрене. Користити петља кључну реч за постављање краја кодног блока петље.
Када покренете цео код, он ће попунити резултате у обе колоне, на основу вредности у изворној табели.
Ево целог кода за референцу:
Суб влоокуп_фн1() Дим и Ас Интегер ластров = Схеетс("Схеет2").Ранге("Ф3").Енд (клДовн).Ров ми_ранге = Схеетс("Схеет2").Ранге("Ф3:Х" & ластров) и = 2 Уради Док Лен (Схеетс("Схеет2").Ћелије (и, 1).Валуе) <> 0 При грешци Настави Следећи листови("Схеет2").Ћелије (и, 2).Валуе = _ Апликација. ВорксхеетФунцтион. ВЛоокуп (Схеетс("Схеет2") _ .Целлс (и, 1).Валуе, ми_ранге, 2, Фалсе) Схеетс("Схеет2").Целлс (и, 3).Валуе = _ Апплицатион. ВорксхеетФунцтион. ВЛоокуп (Схеетс("Схеет2") _ .Целлс (и, 1).Валуе, ми_ранге, 3, Фалсе) и = и + 1 ЛоопЕнд Суб
4. Направите дугме за покретање кода
Када се код склони са пута, можете да креирате дугме у својој Екцел радној свесци да бисте га покренули једним кликом. Уметните жељени облик на празан Екцел лист, кликните десним тастером миша на њега и кликните на Додели макро опција.
У оквиру дијалога изаберите име ваше подрутине и кликните на У реду.
Када желите да покренете свој код, кликните на дугме да бисте видели како се подаци одмах попуњавају.
Коришћење Екцел ВБА за аутоматизацију функција тражења
Екцел ВБА је флексибилан језик, који је добро подешен да олакша аутоматизацију у различитим аспектима МС Екцел-а. У МС Екцел ВБА постоји много опција, од аутоматизације Екцел функција до аутоматског креирања сложених пивот табела.
Када радите са различитим сегментима програма Екцел, можете експериментисати са различитим опцијама како бисте свој живот учинили лакшим и ефикаснијим.