Excel – це потужне програмне забезпечення, яке має понад 450 вбудованих функцій і тисячі інших операцій, які можна поєднувати у справді складні й ефективні формули.
Але іноді буває так, що нам потрібна якась особлива функція, якої в Excel просто немає.
Зрештою, хоч розробники Excel і чудово попрацювали над тим, щоб передбачити безліч потреб користувачів, ніхто не міг знати наперед, що саме робитиме кожен користувач в окремій ситуації.
Для вирішення цієї проблеми нам знадобляться функції, визначені користувачем, або англійською – User Defined Functions (UDF – запам’ятайте цю абревіатуру, ми надалі її використовуватимо). Це навичка користувачів середнього і просунутого рівня володіння Excel, тож якщо ви не працюєте з програмою докладно і професійно, вам можуть і не знадобитися глибші знання.
Але ж нові знання нікому не зашкодять!
Продовжуйте читання, щоб дізнатися коли, навіщо і як створювати користувацькі функції в Excel.
Що таке функції, визначені користувачем (UDF)?
UDF в Excel – це саме те, про що ви подумали: створена вами власноруч функція, яка виконує задану вами операцію.
Так само, як функція SUM змушує Excel підсумовувати значення в дужках, ваша UDF буде змушувати Excel виконувати певні обчислення або дії.
Як користуватися формулами в Excel
Функції та формули Excel роблять використання програми набагато ефективнішим, результативнішим та загалом простішим.
Формули додаються до функцій для створення точних та корисних послідовностей дій, які допомагають вам вводити та впорядковувати дані. Завжди використовуйте повторювані формули та функції в Excel, коли це можливо, щоб оптимізувати дані та обчислення, а також отримати більше досвіду з сотнями доступних вам функцій.
Наприклад, замість того, щоб вводити формулу для обчислення середнього значення набору даних вручну, краще використовуйте функцію AVERAGE, оскільки вона заощадить і час, і пам’ять у файлі, а також зробить процес набагато простішим.
А якщо стандартних інструментів недостатньо, на допомогу приходять UDF: функції, визначені користувачем, у яких ви можете закласти власну логіку обчислень для досягнення конкретної мети.

Характеристики UDF
UDF відрізняються від стандартних функцій Excel тим, що ви створюєте їх саме під свої потреби. Вбудовані функції розраховані на універсальне використання – вони зручні для широкого кола задач, але можуть бути недостатньо гнучкими, коли потрібно врахувати специфіку конкретного набору даних.
Серед переваг використання UDF – такі можливості:
Індивідуальна функціональність
UDF дають змогу створювати власні функції для виконання конкретних обчислень або дій, яких не передбачено у стандартному наборі функцій Excel.
Доступ до об’єктної моделі Excel
UDF мають доступ до об’єктної моделі Excel – тобто до таких елементів, як комірки, діапазони, аркуші та книги. Завдяки цьому користувачі можуть керувати даними безпосередньо в Excel і виконувати складні обчислення прямо у власних функціях.
Синтаксис і використання
Щойно UDF створено, її можна використовувати у формулах Excel так само, як будь-яку стандартну функцію. Користувач просто вводить її в комірку, вказує потрібні аргументи – і функція повертає обчислений результат.
Так само, як ви використовуєте функцію VLOOKUP, набираючи =VLOOKUP(), – щоб застосувати власну функцію, достатньо ввести її назву у формулі. Ви можете назвати свою функцію як завгодно, головне – щоб ця назва не збігалася з уже існуючими функціями Excel.
Повторне використання коду
UDF підтримують повторне використання коду. Створивши один раз власну функцію, ви зможете застосовувати її на різних аркушах і навіть у різних книгах, забезпечуючи послідовний і ефективний спосіб виконання потрібних обчислень.
Станом на момент написання цієї статті (серпень 2025 року), Excel Online через OneDrive не дозволяє користувачам увімкнути режим «Розробник» (Developer mode). Отже, для доступу до цього режиму потрібно використовувати лише десктопну версію Excel.
Що таке Visual Basic for Applications (VBA)?
Visual Basic for Applications – це мова програмування, яку використовують в Excel для створення, зокрема, UDF. Редагування VBA-коду відбувається у спеціальному редакторі – Visual Basic Editor (VBE).
Щоб успішно створювати UDF за допомогою VBA, потрібно знати базовий синтаксис. Подібно до інших мов програмування (наприклад, CSS), тут є певні ключові слова та команди, які потрібно використовувати, щоб вказати коду, що саме має бути виконано.
Ознайомтеся з цією шпаргалкою з VBA – у ній зібрано найпоширеніші команди Excel для роботи з VBA.
Команда | Що вона робить | Синтаксис | Приклад |
IIF | «Immediate If», «миттєве If» - швидка перевірка умови | IIf (Значення, Вірно, Невірно) | IIf (значення > 5, "Більше за 5", "Не більше за 5") |
Dim | Створює змінну myNumber, яка зберігає ціле число, на неї код посилатиметься пізніше. | Dim ваша_визначена_змінна як_зберегти_змінну | Dim myNumber As Integer (визначити myNumber як ціле число) |
If | Умовний оператор, який виконує код залежно від того, чи є умова істинною чи хибною. | If умова Then результат End If | If x>5 then вірно |
Then | Використовується у зв’язці з «If», щоб позначити результат | If умова Then результат | If x > 5 Then MsgBox "x більше за 5" End If |
Else | Використовується із функціями If і Then для висвітлення вторинного результату | Else визначити_дію | Else MsgBox "x не більше за 5" |
Select Case | Дозволяє використовувати функції IF-THEN-ELSE без необхідності перераховувати кожну окремо. | Selet Case Case 1 результат Case 2 результат Case 3 результат Case Else результат End Select | Select Case value Case 1 MsgBox "Значення дорівнює 1" Case 2 MsgBox " Значення дорівнює 2" Case 3 MsgBox " Значення дорівнює 3" Case Else MsgBox " Значення не дорівнює 1, 2 чи 3" End Select |
With | Дозволяє звертатися до властивостей одного об’єкта багаторазово | With object визначити_характеристики End with | With MyObject Висота = 100 End With |
Set | Визначає об’єкт (наприклад, аркуш, діаграму чи графік) як суб’єкт | Set object_name = референс_на_об’єкт | Set ws = ThisWorkbook.Worksheets("Sheet1") (Де "ws" визначено за допомогою "Dim" як "Worksheet") |
On Error Resume Next | Наказує VBA продовжувати виконання коду, навіть якщо є помилка | On Error Resume Next [ввести_код] | On Error Resume Next |
On Error GoTo | Наказує VBA перейти до іншого запису коду, якщо є помилка | On Error GoTo [лейбл] | On Error GoTo ErrorHandler |
Як створити функцію UDF в Excel
Отже, як насправді створити власну UDF в Excel?
Спершу слід ознайомитися з тим, як писати формули в Excel, та з основами VBA.
Крок 1. Відкрийте Visual Basic for Applications (VBA) в режимі редактора (Editor)
- Натисніть Alt + F11 (Windows) або Opt + F11 або Fn + Opt + F11 (Mac), щоб відкрити редактор VBA в Excel. Або ж ви можете перейти на вкладку «Розробник (Developer)» і натиснути «Visual Basic».
- Якщо вкладка «Розробник» не відображається на панелі інструментів, перейдіть до Файл > Параметри > Налаштувати стрічку > встановіть прапорець праворуч для пункту «Розробник».
Крок 2. Вставте новий модуль
- У редакторі VBA клацніть правою кнопкою миші на будь-якому елементі вікна «Огляд проекту (Project Explorer) » (зазвичай ліворуч), наведіть курсор на «Вставити» та виберіть «Модуль».
Крок 3. Напишіть свій код для UDF
- У вікні модуля ви можете починати писати свою UDF мовою VBA. Ось кілька основних правил:
- Ваш код має починатися зі слова Function, щоб VBA розпізнав, що далі йде опис функції.
- Потім назвіть свою функцію. Назва може бути будь-якою, головне — щоб вона не збігалася з уже існуючими функціями. Рекомендується писати нове слово з великої букви (наприклад, myFunctionName) без пробілів у назві.
- Одразу після назви функції в дужках вкажіть аргументи, які хочете використовувати у формулі.
- Ви можете додавати коментарі до коду, починаючи рядок з одинарної лапки '. Ці коментарі не впливатимуть на роботу коду, а служать власними позначками.
- Оголошуйте всі інші змінні та об’єкти, які потрібні для роботи функції.
- Завершуйте код словом End Function, щоб закрити опис функції.
- Якщо після натискання Enter рядок коду стає червоним, це означає, що в ньому є синтаксична помилка, яку потрібно виправити.
Значення у Visual Basic – це само по собі інструкція. Він може містити ключові слова, оператори, змінні, константи та вирази. У VBA існує три різні типи операторів: оголошення, присвоєння та виконуваний файл.
Крок 4. Збережіть свою книгу
- Збережіть книгу Excel з розширенням .xlsm, таким чином збережеться код VBA
Крок 5. Використайте свою UDF в Excel
- Поверніться до своєї книги Excel.
- Клікніть у будь-якій чарунці і використайте свою особливу функцію точно так, як ви користувалися стандартними функціями Excel.
Вітаємо! Тепер у вас є визначена користувачем функція, яка може впоратися з вашими унікальними обчислювальними потребами!
Трохи простіша інформація – далі на відео.
Зразки користувацьких функцій, які можна додати до таблиць Excel
Навіщо вам може знадобитися створити UDF? Прикладами UDF є складні фінансові розрахунки в Excel, статистичний аналіз або спеціалізовані маніпуляції даними. Це типи обчислень, які програмісти Excel не могли передбачити, тому вам потрібно створити власну функцію для обробки даних.
Для чого створювати UDF?
Існує безліч випадків, коли функція UDF може стати у нагоді. Ось кілька причин, чому варто навчитися створювати й програмувати UDF за допомогою VBA в Excel.
Спеціалізовані обчислення
Обчисліть унікальний фінансовий коефіцієнт або нестандартний статистичний показник, щоб врахувати певний параметр, який не охоплюється стандартними функціями Excel. Наприклад, вам може знадобитися розрахувати специфічний індекс прибутковості або власний показник оцінки ризиків, адаптований під конкретну галузь.
Перетворення і очищення даних
Очищення та перетворення даних у специфічний спосіб, який важко реалізувати за допомогою вбудованих функцій. UDF може бути створена для виконання складних завдань з очищення даних, наприклад, видалення дублікатів, форматування тексту або виконання спеціалізованих операцій з рядками.
Формули, специфічні для певної галузі
У таких сферах, як інженерія чи наука, часто виникає потреба у спеціалізованих розрахунках, унікальних для конкретної області. Ви можете створити UDF, щоб обчислювати складні інженерні формули або наукові рівняння, яких немає у стандартному наборі функцій Excel.
Автоматизація складних завдань
Автоматизація низки складних операцій або аналізів, що потребують багатоетапного виконання. За допомогою UDF можна спростити та автоматизувати ці процеси, заощаджуючи час і знижуючи ймовірність помилок. Це може стосуватися складного фінансового моделювання, аналізу сценаріїв або робочих процесів обробки даних.
Індивідуальна звітність та аналіз
Створення кастомізованих звітів із певним форматуванням, макетами або змістом. UDF може бути частиною більшої системи, що полегшує формування звітів, адаптованих під параметри, визначені користувачем.

Як виглядає UDF у VBA
Ось приклад простої UDF, написаної на VBA. Цей код додає всі суми у визначеній валюті у певному діапазоні, а потім ділить отриману суму на 12 – щоб порахувати місячний платіж, який потрібен для погашення всієї суми за один рік. Врахуйте, що це дуже базовий приклад, створений для того, щоб бути зрозумілим і близьким навіть для новачків. Можливо, саме ця функція не стане в нагоді для ваших фінансових задач, але загальна ідея цілком зрозуміла.
Приклад:
Function CalculateMonthlyPayment(rng As Range) As Double
'Ця функція додає числа у вказаному діапазоні та ділить суму на 12, щоб отримати місячний платіж.
'Перевіряємо, що діапазон не порожній
If Not rng Is Nothing Then
Dim cell As Range
Dim totalAmount As Double
'Проходимо по кожній клітинці в діапазоні і сумуємо значення
For Each cell In rng
If IsNumeric(cell.Value) Then
totalAmount = totalAmount + cell.Value
End If
Next cell
'Ділимо суму на 12, щоб отримати місячний платіж
CalculateMonthlyPayment = totalAmount / 12
Else
'Якщо діапазон порожній, повертаємо 0
CalculateMonthlyPayment = 0
End If
End Function
Корисні UDF в Excel
Оскільки функції UDF за визначенням є максимально індивідуалізованими, існує величезне різноманіття таких функцій, створених іншими користувачами для своїх потреб.
Корисним ресурсом можуть стати форуми на кшталт Reddit, VBA Express Forum та OzGrid Forums, де можна подивитися, як інші користувачі VBA реалізують свої ідеї у коді.
Ось лише кілька цікавих прикладів застосування, які вигадали інші користувачі Excel:
- Отримати назву аркуша, на який посилається вказана комірка
Function SheetName(CellReference As Range)
SheetName = CellReference.Parent.Name
End Function
- Перевірити, чи існує файл із певною назвою
Function filesExist(ByVal fileArr As Variant, Optional checkAll As Boolean = True) As Boolean
'Визначає, чи існують файли (fileArr)
'Кожен елемент fileArr має містити повний шлях до файлу
'Якщо checkAll = True, то всі файли в fileArr мають існувати, щоб функція повернула True
'Якщо checkAll = False, то достатньо, щоб існував хоча б один файл з fileArr
filesExist = thingsExist("", fileArr, "File", checkAll)
End Function
- Перевірити, чи існує вказаний аркуш
Function CheckSheetExists(ByRef wb As Workbook, ByVal shName As String) As Boolean
Dim ws As Worksheet
'Перебирає всі аркуші у книзі
For Each ws In wb.Worksheets
'Якщо аркуш із заданою назвою існує, функція повертає True і завершує роботу
If ws.Name = shName Then
CheckSheetExists = True
Exit Function
End If
Next ws
'Якщо аркуш не знайдено, функція повертає False
CheckSheetExists = False
End Function
Оскільки ви можете визначати об'єкти у своєму коді VBA, ви можете створювати мільйони різних UDF.
Дізнайтеся більше про UDF з Superprof
Вивчення будь-якої мови програмування має круту криву навчання, і VBA не виняток. Якщо вам важко опанувати весь цей неймовірний об’єм нових знань, знайте: ви не самотні! Ви можете навчитися працювати з VBA та легко створювати UDF за допомогою репетитора з Superprof!
Навіть якщо ви зовсім новачок, познайомтеся спершу з основами Excel для початківців: так ви прийдете на перше заняття вже з готовими питаннями!
Кілька занять з Excel з кваліфікованим та досвідченим репетитором допоможуть вам почати писати компетентний код у найкоротші терміни.
Створення UDF в Excel може стати справжнім переломним моментом у вашому професійному житті і використанні Excel. Почніть дізнаватися більше про цей складний, але ефективний метод, щоб значно прискорити прогрес і розширити свої можливості в Excel!