Як створити для користувача функцію в microsoft excel
Хоча в Excel безліч (можливо, сотні) вбудованих функцій, таких як SUM (СУМ), VLOOKUP (ВВР), LEFT (ЛЕВСИМВ) та інших, як тільки ви починаєте використовувати Excel для більш складних завдань, ви можете виявити, що вам потрібна така функція, якої ще не існує. Не впадайте у відчай, ви завжди можете створити функцію самі.
кроки
1. Створіть нову книгу Excel або відкрийте книгу, в якій хочете використовувати призначену для користувача функцію (UDF).
2. Відкрийте редактор Visual Basic, який вбудований в Microsoft Excel, вибравши «Інструменти» -> «Макроси» -> «Редактор Visual Basic» (або натиснувши Alt + F11).
3. Додайте новий модуль в свою книгу Excel, натиснувши на зазначену кнопку. Ви можете створити для користувача функцію на робочому аркуші без додавання нового модуля, але в такому випадку ви не зможете використовувати цю функцію на інших аркушах книги.
4. Створіть «заголовок» або «прототип» вашої функції. Він повинен мати наступну структуру:
public function TheNameOfYourFunction (param1 As type1, param2 As type2) As returnType У неї може бути скільки завгодно параметрів, а їх тип повинен відповідати будь-якому базовому типу даних Excel або типу об`єктів, наприклад Range. Параметри в даному випадку виступають в якості «операндів», з якими працює функція. Наприклад, якщо ви пишете SIN (45), щоб обчислити синус 45 градусів, 45 виступає в якості параметра. Код вашої функції буде використовувати це значення для обчислень і представлення результату.
public function TheNameOfYourFunction (param1 As type1, param2 As type2) As returnType У неї може бути скільки завгодно параметрів, а їх тип повинен відповідати будь-якому базовому типу даних Excel або типу об`єктів, наприклад Range. Параметри в даному випадку виступають в якості «операндів», з якими працює функція. Наприклад, якщо ви пишете SIN (45), щоб обчислити синус 45 градусів, 45 виступає в якості параметра. Код вашої функції буде використовувати це значення для обчислень і представлення результату.
5. Додайте код потрібної функції, переконавшись, що ви 1) використовуєте значення, передані в якості параметров- 2) привласнюєте результат імені функції-3) закінчуєте код функції виразом "end function". Вивчення програмування на VBA або на будь-якому іншому мовою може зайняти деякий час і вимагати докладного вивчення керівництва. Однак функції зазвичай мають невеликі блоки коду і використовують дуже мало можливостей мови. Найбільш використовувані елементи мови VBA:
Public Function Course Result (grade As Integer) As String
If grade> = 5 Then
CourseResult = "Approved"
Else
CourseResult = "Rejected"
End If
End Function
Зверніть увагу на елементи всередині блоку If:
IF умова THEN код_1 ELSE код_2 END IF
. Ключове слово Else і друга частина коду необов`язкові.Public Function IsPrime (value As Integer) As Boolean
Dim i As Integer
i = 2
IsPrime = True
Do
If value / i = Int (value / i) Then
IsPrime = False
End If
i = i + 1
Loop While i < value>End Function
Зверніть увагу на елементи:
DO код LOOP WHILE / UNTIL умова
. Зверніть також увагу на другий рядок, де «оголошена» змінна. У своєму коді ви можете додавати змінні і пізніше їх використовувати. Змінні служать для зберігання тимчасових значень всередині коду. І нарешті, зверніть увагу, що функція оголошена як BOOLEAN, що є типом даних, в якому дозволено лише значення TRUE і FALSE. Цей спосіб визначення, чи є число простим, далеко не самий оптимальний, але ми залишили його таким, щоб зробити код більш читабельним.Public Function Factorial (value As Integer) As Long
Dim result As Long
Dim i As Integer
If value = 0 Then
result = 1
ElseIf value = 1 Then
result = 1
Else
result = 1
For i = 1 To value
result = result * i
Next
End If
Factorial = result
End Function
Зверніть увагу на елементи:
FOR змінна = початкове_значення TO конечное_значеніе код NEXT
. Також зверніть увагу на елемент ElseIf в вираженні If, який дозволяє додати більше умов до коду, який потрібно виконати. І нарешті, зверніть увагу на оголошення функції і змінної "result" як Long. Тип даних Long дозволяє зберігати значення, набагато перевищують Integer.Нижче показаний код функції, перетворюючої невеликі числа в слова.
6. Перейдіть назад в робочу книгу Excel і використовуйте свою функцію, набравши в якійсь комірці знак одно, а потім ім`я функції. Додайте до імені функції відкриває дужку, параметри, розділені комами, і дужку. наприклад:
= NumberToLetters (A4)
Ви також можете використовувати свою призначену для користувача функцію, знайшовши її в категорії призначені для користувача в майстра вставки формули. Просто натисніть на кнопку Fx, розташовану зліва від поля формул. Параметри можуть бути трьох типів:
= NumberToLetters (A4)
Ви також можете використовувати свою призначену для користувача функцію, знайшовши її в категорії призначені для користувача в майстра вставки формули. Просто натисніть на кнопку Fx, розташовану зліва від поля формул. Параметри можуть бути трьох типів:
7. Переконайтеся, що результат функції правильний при кількох її спрацьовування, щоб упевнитися, що вона правильно обробляє різні значення параметрів.
Поради
- Всякий раз, коли ви пишете блок коду всередині структури If, For, Do і так далі, переконайтеся, що ви він має відступ, який можна зробити за допомогою пробілів чи знаків табуляції (стиль відступів ви вибираєте самі). Це зробить ваш код більш читабельним, і вам самим потім легше буде відслідковувати помилки і вносити зміни.
- Використовуйте ім`я, яке не використовується в якості імені функції в Excel, інакше ви зможете використовувати тільки одну з цих функцій.
- Excel має безліч вбудованих функцій, і більшість обчислень можна зробити за допомогою незалежного їх використання або з використанням їх комбінацій. Перш ніж писати свою функцію, пройдіться по всьому списку вже існуючих функцій. При використанні вбудованих функцій виконання може відбуватися швидше.
- У деяких випадках для обчислення результату функції необов`язково знати всі значення параметрів. У подібних випадках ви можете використовувати ключове слово Optional перед ім`ям параметра в заголовку функції. У коді ви можете використовувати функцію IsMissing (імя_параметра), щоб визначити, чи було параметру присвоєно якесь значення чи ні.
- Якщо ви не знаєте, як написати код функції, прочитайте статтю про те, як написати найпростіший макрос в Microsoft Excel.
попередження
- У зв`язку з певними заходами безпеки деякі люди можуть відключити макроси. Обов`язково сповістіть своїх колег про те, що книга Excel, яку ви їм посилаєте, містить макроси, і що ці макроси не зашкодять їх комп`ютерів.
- Приклади функцій, використаних в цій статті, - не обов`язково найкращий спосіб вирішити пов`язані з ними проблеми. Ці функції були використані, щоб наочно показати використання контрольних структур мови.
- VBA, як і багато інших мов, має ще кілька контрольних структур крім Do, If і For. Ці структури були приведені тут, щоб пояснити, що можна робити всередині коду функцій. В інтернеті є безліч підручників, за якими ви можете вивчити VBA.