
- •Лабораторна робота №1
- •3. Побудова гістограми
- •4. Побудова кругової діаграми
- •5. Побудова графіків функцій, що задані параметрично
- •6. Побудова поверхні
- •Лабораторна робота №2
- •III. Логічна функція или(…) Повертає „истина”, якщо хоча б один з аргументів має значення „истина”; повертає „ложь”, якщо всі аргументи мають значення „ложь”. Синтаксис:
- •Лабораторна робота №3
- •Лабораторна робота №4
- •Лабораторна робота №5
- •Лабораторна робота №6
- •Лабораторна робота №7
Лабораторна робота №6
Тема: Створення функцій користувача.
Мета роботи: Ознайомитися з поняттям функції користувача, навчитися будувати власні функції
Вони створюються в стандартному модулі редактора VBA. Для входу в редактор треба вибрати команду: Сервіс\Макрос\Редактор Visual Basic або натиснути комбінацію клавіш Alt+F11. У результаті ви потрапляєте в середовище розробки додатків – редактор Visual Basic. Воно має стандартний вигляд для Windows – додатків: рядок меню, панель інструментів (Standart) і два вікна Projekt – VBAProjekt й Propetiers.
Нас у першу чергу цікавить стандартний модуль. Для того щоб його додати в проект, треба набрати команду Insert Module.
Структура коду функції користувача:
Function name (arglist)
[statements]
End Function
де name – ім'я функції користувача;
arglist – список аргументів;
statements – послідовність інструкцій, що виконуються при знаходженні значення функції.
У сукупності вони утворять, так назване, тіло функції. Важлива особливість функції користувача полягає в тому, що носієм значення, що повертає, є її ім'я, тобто ідентифікатор name. Тому серед інструкцій повинна бути присутня, принаймні одна, котра є оператором присвоювання імені функції значення якого-небудь вираження.
Приклад 1. Побудуємо функцію, що повертає вартість товару по його вартості без ПДВ і значенню ставки ПДВ. Наберемо наступний код:
Function Вартість (Вартість_без_ПДВ, ПДВ)
Вартість=Вартість_без_ПДВ*(1+ПДВ/100)
End Function
При правильному наборі першого рядка й натисканні клавіші Введення остання інструкція End Function створюється редактором VBA автоматично. Створена функція за замовчуванням попадає в розділ Визначені користувачем списку Категорія вікна Майстер функцій.
Знайдемо вартість товару з урахуванням ПДВ, якщо його вартість без обліку ПДВ дорівнює 3000 грн., а ПДВ дорівнює 20%.
Для цього:
В комірку A1 ввести текст «Вартість без ПДВ».
В комірку B1 ввести текст «ПДВ».
В комірку C1 ввести текст «Вартість».
В комірку A2 ввести число – 3000.
В комірку B2 ввести – 20.
Виділити комірку C2.
Виконати команду Вставка\Функція.
У першому вікні Майстра функцій у списку Категорія знайти значення Визначені користувачем, а потім у списку Функція вибрати Вартість і натиснути кнопку Ok.
У другому вікні Майстра функцій у поле Вартість_без_ПДВ ввести посилання на комірку A2, а в поле ПДВ – посилання на комірку B2, Ok.
Приклад 2. Створити таблицю і функцію користувача, що нараховує премії за підсумками роботи мережі N магазинів з липня по листопад за такими правилами:
– Якщо продукції продано менше чим на 6500 грн. , то комісійні складають 1%;
– За перше місце автоматично нараховується 5%, за друге – 2,5%;
– За трете – 1,25%.
Прибуток кожного магазину за липень, серпень, вересень, жовтень і листопад задається довільно. Потім підсумовується прибуток для кожного магазину за вказаний період з липня по листопад.
Для обчислення загальних комісійних, а також комісійних за перше і друге місця використовується функція ЕСЛИ (...). Якщо сумарна виручка не менше контрольної, то сумарна виручка множиться на загальний відсоток і ділиться на 100.
Для обчислення премії за перше місце за допомогою функції МАКС (МАССИВ ЗНАЧЕНИЙ СУММАРНОЙ ВЫРУЧКИ) знаходиться максимальне значення сумарної виручки, множиться на відсоток за перше місце і ділиться на 100.
Премія за друге місце обчислюється за допомогою функції НАЙБОЛЬШИЙ (МАССИВ ЗНАЧЕНИЙ СУММАРНОЙ ВЫРУЧКИ; 2), яка дозволяє визначити друге найбільше значення сумарної виручки. Сумарна премія є сума всіх комісійних. Початкові дані наведені в таблиці 6.1.
Таблиця 6.1 – Вихідні дані
Мага зин |
Виручка за липень |
Виручка за серпень |
Виручка за вересень |
Виручка за жовтень |
Виручка за листопад |
Сумарна виручка |
Премія |
1 |
2 957 |
46 342 |
62 977 |
68 739 |
44 884 |
=СУММ(C4:G4) |
=премія(H4;C12;D12;E12;F12;G12;J4) |
2 |
21 204 |
3 923 |
8 059 |
4 806 |
47 516 |
=СУММ(C5:G5) |
=премія(H5;C12;D12;E12;F12;G12;J5) |
3 |
67 291 |
6 715 |
50 499 |
7 009 |
5 855 |
=СУММ(C6:G6) |
=премія(H6;C12;D12;E12;F12;G12;J6) |
4 |
82 086 |
50 638 |
79 047 |
16 210 |
44 941 |
=СУММ(C7:G7) |
=премія(H7;C12;D12;E12;F12;G12;J7) |
5 |
5 664 |
3 099 |
30 918 |
5 243 |
6 676 |
=СУММ(C8:G8) |
=премія(H8;C12;D12;E12;F12;G12;J8) |
Текст функції:
Private Function премия(prod As Double, C As Double, i As Double, j1 As Double, j2 As Double, j3 As Double, mesto As Double) As Double
Dim temp As Double
If mesto = 1 Then
temp = prod * j1 / 100
End If
If mesto = 2 Then
temp = prod * j2 / 100
End If
If mesto = 3 Then
temp = prod * j3 / 100
End If
If mesto > 3 Then
temp = 0
End If
If C <= prod Then
Премия = prod * i / 100 + temp
Else
Премия = 0 + temp
End If
End Function
Результати обчислення наведені в таблиці 6.2.
Таблиця 6.2 – Результати обчислення
№ |
Місяць роботи магазинів |
Всього |
Премія |
Місце | ||||
Липень |
Серпень |
Вересень |
Жовтень |
Листопад | ||||
1 |
2 957 |
46 342р. |
62 977 |
68 739 |
44 884 |
=СУММ(C4:G4) |
12 424 |
2 |
2 |
21 204 |
3 923 |
8 059 |
4 806 |
47 516 |
=СУММ(C5:G5) |
2 565 |
4 |
3 |
67 291 |
6 715 |
50 499 |
7 009 |
5 855 |
=СУММ(C6:G6) |
5 838 |
3 |
4 |
82 086 |
50 638 |
79 047 |
16 210 |
44 941 |
=СУММ(C7:G7) |
21 834 |
1 |
5 |
5 664 |
3 099 |
30 918 |
5 243 |
6 676 |
=СУММ(C8:G8) |
0 |
5 |