Съдържание
Днес ще продължим да изучаваме потребителските функции на Excel. Тъй като вече знаете как да създавате потребителски функции (и, надявам се, сте се опитвали да ги прилагате в Excel), нека да навлезем малко по-надълбоко и да научим как да използваме и съхраняваме потребителски функции в Excel.
Освен това ще ви покажем как лесно да запазвате функциите си във файл за добавки на Excel, за да ги използвате по-късно с няколко кликвания.
Ето за какво ще говорим:
Различни начини за използване на UDF в Excel
Използване на UDF в работни листове
След като сте проверили дали UDF работят правилно, можете да ги използвате във формулите на Excel или в кода VBA.
Можете да прилагате потребителски функции в работна книга на Excel по същия начин, както използвате обикновени функции. Например просто напишете в клетка формулата по-долу:
= GetMaxBetween(A1:A6,10,50)
UDF може да се използва в комбинация с обикновени функции. Например, добавете текст към изчислената максимална стойност:
= CONCATENATE("Максималната стойност между 10 и 50 е ", GetMaxBetween(A1: A6,10,50))
Резултатът можете да видите на снимката по-долу:
Можете да намерите числото, което е едновременно максимално и е в интервала от 10 до 50.
Нека да проверим друга формула:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the
Потребителската функция GetMaxBetween проверява диапазона B2:B9 и намира максималното число между 10 и 50. След това с помощта на INDEX + MATCH получаваме името на продукта, което съответства на тази максимална стойност:
Както виждате, използването на персонализираните функции не се различава много от обикновените функции на Excel.
Когато правите това, не забравяйте, че функцията, дефинирана от потребителя, може само да връща стойност, но не може да извършва други действия. Прочетете повече за ограниченията на функциите, дефинирани от потребителя.
Използване на UDF в процедури и функции на VBA
UDF могат да се използват и във VBA макроси. По-долу можете да видите макрокода, който търси максималната стойност в диапазона от 10 до 50 в колоната, съдържаща активната клетка.
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range(Cells(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End SubКодът на макроса съдържа потребителската функция
GetMaxBetween(.Cells, 10, 50)
Той намира максималната стойност в активната колона. След това тази стойност ще бъде подчертана. Можете да видите резултата от макроса на снимката по-долу.
Потребителска функция може да се използва и вътре в друга потребителска функция. По-рано в блога разгледахме проблема с преобразуването на число в текст с помощта на потребителската функция, наречена Номер на заклинанието .
С нейна помощ можем да получим максималната стойност от диапазона и веднага да я запишем като текст.
За тази цел ще създадем нова потребителска функция, в която ще използваме функциите GetMaxBetween и Номер на заклинанието които вече са ни познати.
Функция SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) Край на функциятаКакто можете да видите, GetMaxBetween е аргумент на друга потребителска функция, Номер на заклинанието . Тя определя максималната стойност, както сме правили много пъти преди това. След това това това число се преобразува в текст.
На снимката на екрана по-горе можете да видите как SpellGetMaxBetween Функцията намира максималното число между 100 и 500 и го преобразува в текст.
Извикване на UDF от други работни книги
Ако сте създали UDF в работната си книга, това, за съжаление, не означава, че няма да срещнете никакви проблеми.
Според моя опит повечето потребители рано или късно създават своя лична колекция от макроси и потребителски функции, за да автоматизират отделни процеси и изчисления. И тук възниква проблемът - кодът на потребителските функции във Visual Basic трябва да се съхранява някъде, за да може да се използва по-късно в работата.
За да приложите персонализираната функция, работната книга, в която сте я запазили, трябва да е отворена в Excel-а. Ако не е, ще получите грешка #NAME! при опит да я използвате. Тази грешка показва, че Excel не знае името на функцията, която искате да използвате във формулата.
Нека разгледаме начините, по които можете да използвате създадените потребителски функции.
Метод 1. Добавяне на името на работната книга към функцията
Преди името на функцията можете да посочите името на работната книга, в която тя се намира. Например, ако сте записали потребителска функция GetMaxBetween() в работна книга с име My_Functions.xlsm , тогава трябва да въведете следната формула:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Метод 2: Съхраняване на всички UDF в един общ файл
Запишете всички потребителски функции в една специална работна книга (например, My_Functions.xlsm ) и при необходимост копирайте желаната функция от нея в текущата работна книга.
Всеки път, когато създавате нова потребителска функция, трябва да дублирате кода й в работната книга, в която ще я използвате. При този метод могат да възникнат няколко неудобства:
- Ако има много работни файлове и функцията е необходима навсякъде, тогава кодът ще трябва да се копира във всяка книга.
- Не забравяйте да запишете работната книга във формат, който позволява работа с макроси (.xlsm или .xlsb).
- При отваряне на такъв файл защитата срещу макроси всеки път ще показва предупреждение, което трябва да бъде потвърдено. Много потребители се изплашват, когато видят предупреждението в жълтата лента, което ги моли да разрешат макросите. За да не виждате това съобщение, трябва да деактивирате напълно защитата на Excel. Това обаче може да не е винаги правилно и безопасно.
Мисля, че ще се съгласите с мен, че през цялото време отварянето на файл и копирането на кода на дефинираните от потребителя функции от него или записването на името на този файл във формулата не е най-доброто решение. така стигнахме до третия начин.
Метод 3. Създаване на файл за добавка на Excel
Мисля, че най-добрият начин е да съхранявате често използваните потребителски функции във файл за добавка към Excel. Предимства на използването на добавката:
- Необходимо е да свържете добавката към Excel само веднъж. След това можете да използвате нейните процедури и функции във всеки файл на този компютър. Не е необходимо да записвате работните си книги във формати .xlsm и .xlsb, тъй като изходният код няма да се съхранява в тях, а във файла на добавката.
- Вече няма да се притеснявате от защитата на макроси, тъй като добавките винаги се отнасят към надеждни източници.
- Добавката е отделен файл. Лесно е да я прехвърлите от компютър на компютър, да я споделите с колеги.
По-късно ще говорим повече за създаването и използването на добавки.
Използване на добавки за съхраняване на потребителски функции
Как да създам своя собствена добавка? Нека преминем през този процес стъпка по стъпка.
Стъпка 1. Създаване на файла на добавката
Отворете Microsoft Excel, създайте нова работна книга и я запишете под подходящо име (например My_Functions) във формат за добавки. За целта използвайте менюто Файл - Запазване като или клавиша F12. Не забравяйте да посочите типа на файла Добавка за Excel :
Вашата добавка ще има разширение .xlam.
Съвет. Моля, имайте предвид, че по подразбиране Excel съхранява добавките в C:\Users\[Your_Name]\AppData\Roaming\Microsoft\AddIns Препоръчвам ви да приемете местоположението по подразбиране. Ако желаете, можете да посочите която и да е друга папка. Но тогава при свързване на добавката ще трябва да намерите и посочите новото ѝ местоположение ръчно. Ако я запишете в папката по подразбиране, не е необходимо да търсите добавката на компютъра си. Excel автоматично ще я включи в списъка.
Стъпка 2. Свързване на файла с добавката
Сега добавката, която създадохме, трябва да бъде свързана с Excel. Тогава тя ще бъде заредена автоматично при стартиране на програмата. За да направите това, използвайте менюто Файл - Опции - Добавки . Уверете се, че Добавки на Excel е избран в Управление на щракнете върху полето Отидете на в долната част на прозореца. В появилия се прозорец маркирайте нашата добавка My_Functions. Ако не я виждате в списъка, щракнете върху бутона Преглед на и отидете до местоположението на файла на добавката.
Ако използвате добавка за съхраняване на потребителски функции, има едно просто правило, което трябва да спазвате. Ако прехвърляте работната книга на други хора, не забравяйте да прехвърлите и копие на добавката, която съдържа желаната от вас функционалност. Те трябва да я свържат по същия начин, както сте го направили сега.
Стъпка 3. Добавяне на потребителски функции и макроси към добавката
Нашата добавка е свързана с Excel, но все още не разполага с никаква функционалност. За да добавите нови UDF към нея, отворете редактора на Visual Basic, като натиснете Alt + F11 . След това можете да добавите нови модули с код VBA, както е описано в урока ми Създаване на UDF.
Изберете файла на добавката си ( My_Finctions.xlam ) в прозореца VBAProject. Използвайте Вмъкване - Модул трябва да напишете потребителски функции в него.
Можете да въведете кода на дефинирана от потребителя функция ръчно или да го копирате от някъде.
Това е. Сега сте създали своя собствена добавка, добавили сте я в Excel и можете да използвате UDF в нея. Ако искате да използвате повече UDF, просто напишете кода в модула на добавката в редактора VBA и го запазете.
Това е всичко за днес. Научихме как да използваме потребителски дефинирани функции в работната си книга. Наистина се надяваме, че тези насоки ще ви бъдат полезни. Ако имате някакви въпроси, пишете в коментарите към тази статия.