Зміст
Сьогодні ми продовжимо знайомство з користувацькими функціями Excel. Оскільки ви вже знаєте, як створювати UDF (і, сподіваюся, пробували застосовувати їх у своєму 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.CurrentRegion 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)
Він знаходить максимальне значення в активному стовпчику, після чого це значення буде виділено. Результат роботи макросу ви можете побачити на скріншоті нижче.
Користувацька функція також може використовуватись всередині іншої користувацької функції. Раніше в нашому блозі розглядалась задача перетворення числа в текст з допомогою користувацької функції з іменем SpellNumber .
З його допомогою ми можемо отримати максимальне значення з діапазону і відразу записати його у вигляді тексту.
Для цього створимо нову користувацьку функцію, в якій будемо використовувати функції GetMaxBetween і SpellNumber які нам вже добре знайомі.
Function SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionЯк бачимо, на сьогоднішній день GetMaxBetween є аргументом іншої користувацької функції, SpellNumber Визначається максимальне значення, як ми це вже робили багато разів. Потім це число переводиться в текст.
На скріншоті вище ви можете бачити, як на екрані з'являється SpellGetMaxBetween знаходить максимальне число в діапазоні від 100 до 500, а потім перетворює його в текст.
Виклик РРО з інших робочих книг
Якщо Ви створили у своїй робочій книзі ОДС, це, на жаль, не означає, що у Вас не виникне жодних проблем.
З мого досвіду, більшість користувачів рано чи пізно створюють свою особисту колекцію макросів і користувацьких функцій для автоматизації окремих процесів і розрахунків. І тут виникає проблема - код користувацьких функцій на Visual Basic потрібно десь зберігати, щоб потім використовувати в роботі.
Щоб застосувати користувацьку функцію, в Excel повинна бути відкрита книга, в якій ви її зберегли. Якщо це не так, то при спробі її використання ви отримаєте помилку #NAME! Ця помилка свідчить про те, що Excel не знає імені функції, яку ви хочете використовувати у формулі.
Давайте розглянемо способи використання створених вами користувацьких функцій.
Спосіб 1. Додати у функцію ім'я робочої книги
Перед назвою функції можна вказати назву робочої книги, в якій вона знаходиться. Наприклад, якщо ви зберегли користувацьку функцію GetMaxBetween() в робочій книжці на ім'я My_Functions.xlsm то необхідно ввести наступну формулу:
= Мої_функції.xlsm!ОтриматиМаксМіж(A1:A6,10,50)
Спосіб 2. Зберігати всі ЕПД в одному загальному файлі
Зберегти всі користувацькі функції в одній спеціальній робочій книзі (наприклад, My_Functions.xlsm ) і скопіювати з неї потрібну функцію в поточну книгу, якщо це необхідно.
Кожного разу при створенні нової користувацької функції потрібно дублювати її код в робочій книзі, в якій вона буде використовуватися. При такому способі може виникнути ряд незручностей:
- Якщо робочих файлів багато, а функція потрібна скрізь, то код доведеться копіювати в кожну книгу.
- Не забудьте зберегти робочу книгу у форматі з підтримкою макросів (.xlsm або .xlsb).
- При відкритті такого файлу захист від макросів кожного разу буде виводити попередження, яке необхідно підтвердити. Багатьох користувачів лякає, коли вони бачать попередження у вигляді жовтої смуги, яка просить включити макроси. Щоб не бачити це повідомлення, потрібно повністю відключити захист Excel. Однак це не завжди може бути правильним і безпечним.
Думаю, ви погодитеся зі мною, що весь час відкривати файл і копіювати з нього код користувацьких функцій або писати ім'я цього файлу у формулі - не найкраще рішення. Таким чином, ми прийшли до третього способу.
Спосіб 3. Створити файл надбудови Excel
Я вважаю, що найкращим способом є зберігання часто використовуваних користувацьких функцій у файлі надбудови Excel. Переваги використання надбудови:
- Підключити надбудову до Excel потрібно лише один раз, після чого можна використовувати її процедури і функції в будь-якому файлі на цьому комп'ютері. Зберігати робочі книги у форматах .xlsm і .xlsb не потрібно, оскільки вихідний код буде зберігатися не в них, а у файлі надбудови.
- Вам більше не доведеться турбуватися про захист макросів, оскільки надбудови завжди посилаються на перевірені джерела.
- Доповнення - це окремий файл, його легко переносити з комп'ютера на комп'ютер, ділитися з колегами.
Детальніше про створення та використання надбудови ми поговоримо пізніше.
Використання надбудов для зберігання користувацьких функцій
Як створити власний додаток? Давайте пройдемо цей процес крок за кроком.
Крок 1. Створіть файл доповнення
Відкрийте Microsoft Excel, створіть нову книгу і збережіть її під будь-яким відповідним ім'ям (наприклад, My_Functions) у форматі надбудови. Для цього скористайтеся меню Файл - Зберегти як або клавішу F12. Обов'язково вкажіть тип файлу Надбудова для Excel :
Ваше доповнення матиме розширення .xlam.
Порада. Зверніть увагу, що за замовчуванням Excel зберігає надбудови в папці C:\Users\[Ваше ім'я]\AppData\Roaming\Microsoft\AddIns Рекомендую прийняти розташування за замовчуванням. При бажанні можна вказати будь-яку іншу папку. Але тоді при підключенні надбудови потрібно буде знайти і вказати її нове розташування вручну. Якщо зберегти її в папці за замовчуванням, то не потрібно буде шукати надбудову на комп'ютері. Excel автоматично перерахує її в своєму списку.
Крок 2. Підключіть файл доповнення
Тепер створену нами надбудову потрібно підключити до Excel. Тоді вона буде завантажуватися автоматично при запуску програми. Для цього скористайтеся меню Файл - Параметри - Надбудови Переконайтеся, що Надбудови для Excel обирається в розділі Керувати Натисніть на поле Іди. У вікні, що з'явилося, відзначаємо наше доповнення My_Functions. Якщо ви не бачите його в списку, натискаємо кнопку Переглянути і перейдіть до місця розташування вашого додаткового файлу.
Якщо ви використовуєте надбудову для зберігання користувацьких функцій, слід дотримуватися одного простого правила. Якщо ви передаєте книгу іншим людям, обов'язково передайте також копію надбудови, яка містить потрібну вам функціональність. Вони повинні підключити її так само, як ви це зробили зараз.
Крок 3. Додавання користувацьких функцій та макросів до надбудови
Наш додаток підключений до Excel, але поки що не має ніякого функціоналу. Щоб додати в нього нові UDF, відкрийте редактор Visual Basic Editor, натиснувши Alt + F11. Потім ви можете додавати нові модулі за допомогою коду VBA, як описано в моєму підручнику "Створення UDFs".
Виберіть файл доповнення ( My_Finctions.xlam ) у вікні VBAProject. З допомогою кнопки Вставка - модуль Для того, щоб додати користувацький модуль, потрібно написати в нього кастомні функції.
Код користувацької функції можна ввести вручну або скопіювати звідкись.
Ось і все, тепер ви створили власну надбудову, додали її в Excel і можете використовувати УДФ в ній. Якщо ви хочете використовувати більше УДФ, просто напишіть код в модулі надбудови в редакторі VBA і збережіть його.
На цьому на сьогодні все, ми навчилися використовувати користувацькі функції у вашій робочій книзі. Дуже сподіваємося, що ці рекомендації будуть вам корисними. Якщо у вас виникнуть запитання, пишіть у коментарях до цієї статті.