Како се користе функције радног листа попут ВЛООКУП -а у ВБА Екцелу?

Преглед садржаја:

Anonim

Функције попут ВЛООКУП, ЦОУНТИФ, СУМИФ називају се функције радног листа. Генерално, функције које су унапред дефинисане у Екцелу и спремне за употребу на радном листу су функције радног листа. Не можете да мењате или видите код иза ових функција у ВБА.

С друге стране, кориснички дефинисане функције и функције специфичне за ВБА, попут МсгБок или ИнпутБок, су ВБА функције.

Сви знамо како да користимо ВБА функције у ВБА. Али шта ако желимо да користимо ВЛООКУП у ВБА. Како то да урадимо? У овом чланку ћемо истражити управо то.

Коришћење функција радног листа у ВБА

За приступ функцији радног листа користимо класу Апплицатион. Скоро све функције радног листа наведене су у класи Апплицатион.ВорксхеетФунцтион. Помоћу дот оператора можете им приступити свима.

У било којој подмени напишите Апплицатион.ВорксхеетФунцтион. И почните да пишете назив функције. ВБА интеллисенсе ће приказати назив функција доступних за употребу. Када изаберете назив функције, она ће тражити променљиве, као и свака функција на екцелу. Али мораћете да промените променљиве у ВБА разумљивом формату. На пример, ако желите да прођете опсег А1: А10, мораћете да га проследите као објекат опсега попут Ранге ("А1: А10").

Па хајде да користимо неке функције радног листа да бисмо то боље разумели.

Како се користи функција ВЛООКУП у ВБА

Да бих показао како можете да користите функцију ВЛООКУП у ВБА, овде имам примере података. Морам да прикажем име и град датог ИД -а за пријављивање у оквиру за поруку користећи ВБА. Подаци су распоређени у распону А1: К26.

Притисните АЛТ+Ф11 да бисте отворили ВБЕ и уметнули модул.

Погледајте доњи код.

Суб ВсФунцитонс () Дим логинИД као Стринг Дим наме, цити Ас Стринг логинИД = "АХКЈ_1-3357042451" 'Коришћењем функције ВЛООКУП за добијање имена датог ид-а у табели наме = Апплицатион.ВорксхеетФунцтион.ВЛоокуп (логинИД, Ранге ("А1: К26" ), 2, 0) 'Коришћењем функције ВЛООКУП за добијање града датог ИД -а у табели цити = Апплицатион.ВорксхеетФунцтион.ВЛоокуп (логинИД, Ранге ("А1: К26"), 4, 0) МсгБок ("Наме:" & наме & вбЛф & "Град:" & град) Енд Суб 

Када покренете овај код, добићете овај резултат.

Можете видети колико брзо ВБА штампа резултат у оквир за поруку. Хајде сада да испитамо код.

Како то функционише?

1.

Дим логинИД као Стринг

Дим име, град Ас Стринг

Прво смо декларисали две променљиве стринг типа за складиштење резултата враћеног функцијом ВЛООКУП. Користио сам променљиве врсте низа јер сам сигуран да ће резултат који враћа ВЛООКУП бити вредност низа. Ако се очекује да функција радног листа врати вредност, датум, опсег итд. Врсту вредности, користите ту врсту променљиве за складиштење резултата. Ако нисте сигурни коју врсту вредности ће функција функције радног листа вратити, користите варијабле типа варијанте.

2.

логинИД = "АХКЈ_1-3357042451"

Затим смо користили променљиву логинИД за складиштење вредности претраживања. Овде смо користили тврдо кодирану вредност. Можете користити и референце. На пример. Можете да користите опсег ("А2"). Вредност за динамичко ажурирање вредности тражења из опсега А2.

3.

наме = Апплицатион.ВорксхеетФунцтион.ВЛоокуп (логинИД, Ранге ("А1: К26"), 2, 0)

Овде користимо функцију ВЛООКУП да бисмо добили. Сада када исправите функцију и отворите заграде, она ће вам показати потребне аргументе, али не тако описне као што је приказано у Екцелу. Уверите се сами.

Морате запамтити како и коју променљиву морате да користите. Увек се можете вратити на радни лист да видите детаље описне променљиве.

Овде је вредност тражења Арг1. За Арг1 користимо логинИД. Табела за претраживање је Арг2. За Арг2 користили смо Ранге ("А1: К26"). Имајте на уму да нисмо користили директно А2: К26 као што радимо у Екцелу. Индекс колона је Арг3. За Арг3 користили смо 2, будући да се име налази у другој колони. Тип претраживања је Арг4. Користили смо 0 као Арг4.

цити = Апплицатион.ВорксхеетФунцтион.ВЛоокуп (логинИД, опсег ("А1: К26"), 4, 0)

Слично добијамо и назив града.

4.

МсгБок ("Назив:" & име & вбЛф & "Град:" & град)

На крају штампамо име и град користећи Мессагебок.

Зашто користити функцију радног листа у ВБА?

Функције радног листа имају моћ огромних прорачуна и неће бити паметно занемарити моћ функција радног листа. На пример, ако желимо стандардну девијацију скупа података и желите да за то напишете цео код, може вам требати неколико сати. Али ако знате како да користите функцију радног листа СТДЕВ.П у ВБА да бисте израчунали у једном потезу.

Суб ГетСтдДев () стд = Апплицатион.ВорксхеетФунцтион.СтДев_П (Опсег ("А1: К26")) Крај Суб 

Коришћење више функција радног листа ВБА

Рецимо да морамо да користимо индексно подударање да бисмо преузели неке вредности. Како бисте сада искривили формулу у ВБА. Претпостављам да ћете ово написати:

Суб ИндМтцх () Вал = Апплицатион.ВорксхеетФунцтион.Индек (ресулт_ранге, _ Апплицатион.ВорксхеетФунцтион.Матцх (лоокуп_валуе, _ лоокуп_ранге, матцх_типе)) Енд Суб 

Ово није погрешно, али је дуготрајно. Прави начин коришћења више функција је коришћење блока Витх. Погледајте пример испод:

Суб ИндМтцх () Са Апплицатион.ВорксхеетФунцтион Вал = .Индек (ресулт_ранге, .Матцх (лоокуп_валуе, лоокуп_ранге, матцх_типе)) вал2 = .ВЛоокуп (арг1, арг2, арг3) вал4 = .СтДев_П (бројеви) Енд витх Енд Суб 

Као што видите, користио сам Витх блоцк да кажем ВБА -и да ћу користити својства и функције Апплицатион.ВорксхеетФунцтион. Тако да не морам то свуда да дефинишем. Управо сам користио дот оператор за приступ функцијама ИНДЕКС, МАТЦХ, ВЛООКУП и СТДЕВ.П. Једном када употребимо наредбу Енд Витх, нећемо моћи приступити функцијама без кориштења потпуно квалифицираних назива функција.

Дакле, ако морате да користите више функција радног листа у ВБА, користите са блоком.

Нису све функције радног листа доступне путем Апплицатион.ВорксхеетФунцтион

Неке функције радног листа су директно доступне за употребу у ВБА. Не морате да користите објекат Апплицатион.ВорксхеетФунцтион.

На пример, функције попут Лен () која се користи за добијање броја знакова у низу, лево, десно, средњи, исецање, помак итд. Ове функције се могу директно користити у ВБА. Ево примера.

Суб ГетЛен () Стрнг = "Хелло" Дебуг.Принт (Лен (стрнг)) Енд Суб 

Видите, овде смо користили функцију ЛЕН без коришћења објекта Апплицатион.ВорксхеетФунцтион.

Слично можете користити и друге функције попут леве, десне, средине, знака итд.

Суб ГетЛен () Стрнг = "Здраво" Дебуг.Принт (Лен (стрнг)) Дебуг.Принт (лево (стрнг, 2)) Дебуг.Принт (десно (стрнг, 1)) Дебуг.Принт (средина (стрнг, 3, 2)) Енд Суб 

Када покренете горњу подмени, вратиће се:

5 Он ће лл 

Па да, момци, овако можете користити функцију радног листа програма Екцел у ВБА. Надам се да сам вам довољно објаснио и да вам је овај чланак помогао. Ако имате било каквих питања у вези овог чланка или било чега другог везаног за ВБА, питајте у одељку за коментаре испод. До тада можете прочитати о другим сродним темама испод.

Шта је ЦСнг функција у програму Екцел ВБА | СЦнг функција је ВБА функција која претвара било који тип података у број са плутајућом зарезом једне прецизности ("с обзиром да је то број"). Најчешће користим ЦСнг функцију за претварање текстуално обликованих бројева у стварне бројеве.

Како добити обрнути текст и број путем ВБА у Мицрософт Екцелу | За поништавање броја и текста користимо петље и средњу функцију у ВБА. 1234 ће бити претворено у 4321, „ви“ ће бити претворено у „уои“. Ево исечка.

Форматирајте податке прилагођеним форматима бројева помоћу ВБА у Мицрософт Екцелу | Да бисте променили формат броја одређених колона у Екцелу, користите овај ВБА исечак. Он покрива формат броја који је наведен у наведеном формату једним кликом.

Коришћење догађаја промене радног листа за покретање макроа када се изврши било каква промена | Дакле, за покретање вашег макроа кад год се лист ажурира, користимо ВБА догађаје радног листа.

Покрените макро ако је на листу унета било каква промена у наведеном опсегу | Да бисте покренули макро код када се вредност у наведеном опсегу промени, користите овај ВБА код. Он детектује сваку промену направљену у наведеном опсегу и покреће догађај.

Најједноставнији ВБА код за означавање тренутног реда и колоне помоћу | Користите овај мали ВБА исечак да означите тренутни ред и колону листа.

Популарни чланци:

50 Екцел пречица за повећање продуктивности | Убрзајте свој задатак. Ових 50 пречица ће учинити да радите још брже на Екцелу.

Функција ВЛООКУП у Екцелу | Ово је једна од најчешће кориштених и популарних функција програма Екцел која се користи за тражење вриједности из различитих распона и листова.

ЦОУНТИФ у програму Екцел 2016 | Бројте вредности са условима користећи ову невероватну функцију. Не морате да филтрирате податке да бисте рачунали одређене вредности. Цоунтиф функција је неопходна за припрему ваше контролне табле.

Како се користи функција СУМИФ у програму Екцел | Ово је још једна битна функција контролне табле. Ово вам помаже да сумирате вредности под одређеним условима.