Преглед садржаја
Данас ћемо наставити да истражујемо прилагођене Екцел функције. Пошто већ знате како да креирате УДФ-ове (а надам се да сте покушали и да их примените у свом Екцел-у), хајде да копамо мало дубље и научимо како да користите и чувате функције које дефинише корисник у Екцел-у.
Штавише, показаћемо вам како да лако сачувате своје функције у Екцел датотеку додатка да бисте их касније користили у неколико кликова.
Дакле, ево о чему ћемо разговарати:
Различити начини коришћења УДФ-а у Екцел-у
Коришћење УДФ-ова у радним листовима
Када проверите да ли ваши УДФ-ови раде исправно, можете их користити у Екцел-у формуле или у ВБА коду.
Можете да примените прилагођене функције у Екцел радној свесци на исти начин као што користите обичне функције. На пример, само упишите у ћелију формулу испод:
= GetMaxBetween(A1:A6,10,50)
УДФ се може користити у комбинацији са редовним функцијама. На пример, додајте текст израчунатој максималној вредности:
= CONCATENATE("Maximum value between 10 and 50 is ", GetMaxBetween(A1: A6,10,50))
Можете видети резултат на снимку екрана испод:
Ви може да пронађе број који је и максималан и који је у опсегу од 10 до 50.
Проверимо другу формулу:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the
Прилагођена функција ГетМакБетвеен проверава опсег Б2:Б9 и проналази максималан број између 10 и 50. Затим, користећи ИНДЕКС + МАТЦХ, добијамо назив производа који одговара овој максималној вредности:
Као што видите, употреба прилагођених функција се не разликује превише од обичног Екцел-афункције.
Када то радите, запамтите да кориснички дефинисана функција може да врати само вредност, али не може да изврши никакве друге радње. Прочитајте више о ограничењима кориснички дефинисаних функција.
Коришћење УДФ-а у ВБА процедурама и функцијама
УДФ-ови се такође могу користити у ВБА макроима. Испод можете видети код макроа који тражи максималну вредност у опсегу од 10 до 50 у колони која садржи активну ћелију.
Суб МацроВитхУДФ() Дим Рнг Ас Ранге, макцасе, и Ас Лонг Витх АцтивеСхеет.Ранге( Ћелије(АцтивеЦелл.ЦуррентРегион.Ров, АцтивеЦелл.Цолумн), Целлс(АцтивеЦелл.ЦуррентРегион.Ровс.Цоунт _ + АцтивеЦелл.ЦуррентРегион.Ров - 1, АцтивеЦелл.Цолумн)) макцасе = ГетМакБетвеен, иЦеллс5 = ГетМакБетвеен(.Целлс5) Апплицатион.Матцх(макцасе, .Целлс, 0) .Целлс(и).Интериор.Цолор = вбРед Енд Витх Енд СубКод макроа садржи прилагођену функцију
GetMaxBetween(.Cells, 10, 50)
То проналази максималну вредност у активној колони. Тада ће ова вредност бити истакнута. Резултат макроа можете видети на слици испод.
Прилагођена функција се такође може користити унутар друге прилагођене функције. Раније у нашем блогу смо разматрали проблем претварања броја у текст помоћу прилагођене функције под називом СпеллНумбер .
Уз њену помоћ можемо добити максималну вредност из опсега и одмах запишите га као текст.
Да бисмо то урадили, креираћемо нову прилагођену функцију у којој ћемо користити функције ГетМакБетвеен и СпеллНумбер који су нам већ познати.
Функција СпеллГетМакБетвеен(рнгЦеллс Ас Ранге, МинНум, МакНум) СпеллГетМакБетвеен = СпеллНумбер(ГетМакНгЦеллс, Енд, Мак. ФункцијаКао што видите, функција ГетМакБетвеен је аргумент другој прилагођеној функцији, СпеллНумбер . Дефинише максималну вредност, као што смо радили много пута раније. Овај број се затим конвертује у текст.
На слици изнад, можете видети како функција СпеллГетМакБетвеен проналази максимални број између 100 и 500 и затим га конвертује у текст.
Позивање УДФ-а из других радних свеска
Ако сте креирали УДФ у својој радној свесци, то, нажалост, не значи да се нећете уопште суочити са проблемима.
По мом искуству, већина корисника пре или касније креира своју личну колекцију макроа и прилагођених функција за аутоматизацију појединачних процеса и прорачуна. И овде настаје проблем – код кориснички дефинисаних функција у Висуал Басиц-у треба негде да буде ускладиштен да би се касније користио у раду.
Да бисте применили прилагођену функцију, радна свеска у којој сте је сачували мора бити отворена у вашем Екцел-у. Ако није, добићете #НАМЕ! грешка при покушају да га користите. Ова грешка указује да Екцел не зна име функције коју желите да користите у формули.
Хајде да погледамо начине укоју можете користити прилагођене функције које креирате.
Метод 1. Додајте назив радне свеске функцији
Можете навести име радне свеске у којој се налази пре имена функција. На пример, ако сте сачували прилагођену функцију ГетМакБетвеен() у радној свесци под називом Ми_Фунцтионс.клсм , онда морате да унесете следећу формулу:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Метод 2. Чувајте све УДФ-ове у једној заједничкој датотеци
Сачувајте све прилагођене функције у једној посебној радној свесци (на пример, Ми_Фунцтионс.клсм ) и копирајте жељену функцију из ње у тренутну радну свеску, ако је потребно.
Сваки пут када креирате нову прилагођену функцију, потребно је да дуплирате њен код у радној свесци у којој ћете је користити. Са овом методом може настати неколико непријатности:
- Ако има много радних датотека, а функција је свуда потребна, онда ће код морати да се копира у сваку књигу.
- Не заборавите да сачувате радну свеску у формату са омогућеним макроима (.клсм или .клсб).
- Када отворите такву датотеку, заштита од макроа ће сваки пут приказати упозорење, које мора бити потврђено. Многи корисници се уплаше када виде жуту траку упозорења која од њих тражи да омогуће макрое. Да бисте избегли да видите ову поруку, потребно је да потпуно онемогућите Екцел заштиту. Међутим, ово можда није увек тачно и безбедно.
Мислим да ћете се сложити са мном да све време отварањадатотеку и копирање кода кориснички дефинисаних функција из ње или уписивање имена ове датотеке у формулу није најбоље решење. тако смо дошли до трећег начина.
Метод 3. Креирајте датотеку програмског додатка за Екцел
Мислим да је најбољи начин да ускладиштите често коришћене прилагођене функције у Екцел датотеку додатака . Предности коришћења програмског додатка:
- Морате само једном да повежете програмски додатак са Екцел-ом. Након тога, можете користити његове процедуре и функције у било којој датотеци на овом рачунару. Не морате да чувате своје радне свеске у .клсм и .клсб форматима јер изворни код неће бити ускладиштен у њима већ у датотеци додатака.
- Више вам неће сметати заштита макроа јер програмски додаци се увек односе на поуздане изворе.
- Додатак је засебна датотека. Лако га је пренети са рачунара на рачунар, поделити са колегама.
О креирању и коришћењу додатка ћемо више причати касније.
Коришћење адд- инс за чување прилагођених функција
Како да направим сопствени додатак? Хајде да прођемо кроз овај процес корак по корак.
Корак 1. Креирајте датотеку додатака
Отворите Мицрософт Екцел, креирајте нову радну свеску и сачувајте је под било којим одговарајућим именом (на пример, Ми_Фунцтионс) у формату додатака. Да бисте то урадили, користите мени Датотека - Сачувај као или тастер Ф12. Обавезно наведите тип датотеке Екцел додатак :
Ваш додатак ће имати екстензију .клам.
Савет. Имајте на уму даЕкцел подразумевано складишти додатке у фасцикли Ц:\Усерс\[Ваше_име]\АппДата\Роаминг\Мицрософт\АддИнс . Препоручујем вам да прихватите подразумевану локацију. Ако желите, можете одредити било коју другу фасциклу. Али тада, када повезујете додатак, мораћете ручно да пронађете и одредите његову нову локацију. Ако га сачувате у подразумеваној фасцикли, не морате да тражите додатак на рачунару. Екцел ће га аутоматски приказати.
Корак 2. Повежите датотеку програмског додатка
Сада програмски додатак који смо направили треба да буде повезан са Екцел-ом. Затим ће се аутоматски учитати када се програм покрене. Да бисте то урадили, користите мени Датотека - Опције - Додаци . Уверите се да је Екцел додаци изабрано у пољу Управљање . Кликните на дугме Иди на дну прозора. У прозору који се појави означите наш додатак Ми_Фунцтионс. Ако га не видите на листи, кликните на дугме Прегледај и дођите до локације датотеке са додацима.
Ако ако користите додатак за складиштење прилагођених функција, постоји једно једноставно правило које треба следити. Ако преносите радну свеску на друге особе, обавезно пренесите и копију додатка који садржи жељену функционалност. Требало би да га повежу на исти начин као што сте сада урадили.
Корак 3. Додајте прилагођене функције и макрое у програмски додатак
Наш додатак је повезан са Екцел-ом, али није немају никакву функционалностипак. Да бисте му додали нове УДФ-ове, отворите Висуал Басиц Едитор притиском на Алт + Ф11. Затим можете додати нове модуле са ВБА кодом као што је описано у мом водичу за Креирање УДФ-ова.
Изаберите датотеку додатка ( Ми_Финцтионс.клам ) у прозор ВБАПројецт. Користите мени Инсерт - Модуле да додате прилагођени модул. Морате да упишете прилагођене функције у њега.
Можете или ручно да унесете код кориснички дефинисане функције или да га копирате однекуд.
То је све. Сада сте креирали сопствени додатак, додали га у Екцел и можете користити УДФ у њему. Ако желите да користите више УДФ-ова, само напишите код у модулу додатака у ВБА едитору и сачувајте га.
То је то за данас. Научили смо како да користимо кориснички дефинисане функције у вашој радној свесци. Заиста се надамо да ће вам ове смернице бити од помоћи. Ако имате питања, пишите у коментарима на овај чланак.