Пользовательские функции в Excel, страница 2

          Public Function Возраст(Дрожд As Date) As Integer

               Возраст = DateDiff("yyyy", Дрожд, Now)

         End Function

В этой функции: DateDiff() – стандартная функция VBA, определяющая разность между заданной датой Дрожд и текущей, переменная Дрожд – дата рождения, Now – стандартная функция, возвращающая текущую дату, yyyy – параметр функции DateDiff(), задающий единицу измерения год.

2.  Проверьте работу функции, используя ее в ячейках Е3 и Е4, предварительно задав в ячейках D3, D4 даты рождения. Сама функция находится в категории Определенные пользователем (см. п. 4 раздела А). Аргумент функции Возраст() – это ячейка D3.  Чтобы ввести ее имя в поле аргумента, установите курсор в это поле и щелкните ЛКМ по ячейке D3 и на кнопку ОК.

3.  Проверка возраста с помощью функции Возраст показывает, что вычисление возраста происходит с превышением. Человеку целых 70 лет, а вычисляется 71. Это можно исправить так. Создайте функцию Возраст2, в которой единицу измерения в функции DateDiff() примите равной mмесяцы. Затем используйте ее в ячейках F3, F4 с использование стандартной функции ЦЕЛОЕ(). Формула в ячейке  F3 будет такой: = ЦЕЛОЕ(Возраст2(D3)/12).

Б. Расчет комиссионных

1.  В соответствие с рис. 1 создайте две таблицы: одну с 2-мя колонками, другую с 7-ю колонками.

2.  В 1-ю таблицу введите все указанные на рис. 1 данные. Во 2-ю таблицу введите данные только в три колонки.

3.  Из 1-й таблицы ясен алгоритм, в соответствие с которым начисляются комиссионные менеджерам продаж по объему вырученной за неделю суммы.

4.  Создайте функцию Function с именем Komis, которая не учитывает уменьшение комиссионных менеджерам, для которых установлен испытательный срок. Для этого введите следующий программный код процедуры:
Public Function Komis(sales As Double) As Double

           ‘ объявление констант:

           Const proc1 As Single = 0.08

           Const proc2 As Single = 0.1

           Const proc3 As Single = 0.15

           Const sales1 As Double = 10000

           Const sales2 As Double = 20000

           ‘  начисление комиссионных в зависимости

              ‘  от суммы продаж:

           If sales < sales1 Then

                 Komis = sales * proc1

           ElseIf sales < sales2 Then

                 Komis = sales * proc2

           Else

                 Komis = sales * proc3

           End If

     End Function

5.  В ячейках Е13 – Е16 используйте созданную функцию Komis для расчета комиссионных.

6.  Создайте функцию Function с именем Komis2, которая учитывает уменьшение комиссионных менеджерам, для которых установлен испытательный срок. Для этого введите следующий программный код процедуры:

Public Function Komis2(sales As Double, IspSrok As String) As Double

    Dim Komis As Double  ‘ объявляем переменную Komis

    Const proc1 As Single = 0.08

    Const proc2 As Single = 0.1

    Const proc3 As Single = 0.15

    Const sales1 As Double = 10000

    Const sales2 As Double = 20000

    Const KoffIsp As Single = 0.75

    ‘ расчет комиссионных в зависимости

     ‘ от вырученной суммы:

    If sales < sales1 Then

         Komis = sales * proc1

    ElseIf sales < sales2 Then

         Komis = sales * proc2

    Else

         Komis = sales * proc3

    End If