Найти тему
VBA Excel с нуля

VBA Excel № 64.1 Функции с одним аргументом в VBA.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

В этой статье мы рассмотрим создание функции для расчета комиссионных по объему продаж одного из продавцов. Расчеты будут базироваться на следующей таблице ставок комиссионных:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Это таблица, в которой ставки комиссионных изменяются нелинейно в зависимости от общего объема продаж за месяц. Сотрудники, достигающие более высоких объемов продаж, получают более высокие комиссионные.

Существует несколько способов рассчитать комиссионные для различных объемов продаж с использованием инструментов, доступных в Excel. Давайте рассмотрим несколько из них:

  • Длинная формула: Вы можете создать длинную формулу в Excel для расчета комиссионных на основе таблицы ставок. Это требует написания довольно объемной формулы и может быть не очень удобным для обслуживания в будущем.
  • Использование функций Excel: Для расчета комиссионных вы можете воспользоваться функцией из категории ссылок и массивов, такой как функция ВПР(). Этот метод не требует программирования на VBA и обеспечивает более гибкий и легко читаемый подход.
  • Создание пользовательской функции: Вы также можете создать пользовательскую функцию в Excel, что позволит вам рассчитывать комиссионные без необходимости использовать функции ссылок и массивов. Этот метод может быть особенно полезен, если вам нужно сделать процесс более автоматизированным и удобным.
Скриншот с моего ноутбука
Скриншот с моего ноутбука

После внесения функции КОМИССИОННЫЕ в модуль VBA, вы можете использовать её в формулах на рабочем листе Excel или вызывать из других процедур VBA. Это приносит значительные удобства при работе с данными и автоматизации расчетов.

Давайте рассмотрим пример использования этой функции в формуле на листе Excel. Предположим, у нас есть объем продаж 30 000, и мы хотим рассчитать комиссионные, используя функцию КОМИССИОННЫЕ. Введя следующую формулу в ячейке, мы получим результат 3 600 (объем продаж 30 000 соответствует ставке комиссионных 12%):

=КОМИССИОННЫЕ(30000)

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Это позволяет довольно легко и быстро рассчитывать комиссионные на рабочем листе, просто указав необходимый объем продаж и используя созданную пользовательскую функцию.

Даже если на рабочем листе не требуется использовать пользовательские функции напрямую, их создание всё равно значительно упрощает программирование на VBA. Это особенно полезно, когда вы хотите создать процедуры, которые выполняют сложные расчеты на основе объема продаж. Процедуры VBA могут легко вызывать созданную функцию для расчёта комиссионных без необходимости дублировать логику расчета. Давайте рассмотрим пример маленькой процедуры ЗапросПродаж:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Эта процедура сначала отображает диалоговое окно для ввода объема продаж, затем, используя функцию КОМИССИОННЫЕ, рассчитывает комиссионные и выводит результат в окне сообщения. Это делает процесс ввода данных и расчета комиссионных более удобным и эффективным.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Данная процедура работает корректно, но не верх совершенства. В следующей статье давайте улучшим версию процедуры ЗапросПродаж.