Создание пользовательской функции по нахождению суммы за квартал - VB
Формулировка задачи:
Уважаемые господа, уже как месяц активно практикуюсь в написании кода в VB (в формах). Более или мене разобрался. Теперь очередь дошла до пользовательских функций, которые основаны на встроенных функциях.
Задача следующая: у нас есть лист с 2 столбцами: 1-дата, 2-некое число. Мне необходимо посчитать сумму элементов за квартал. Была написана следующая ф-ия, которая выполняет данное действо:
=СУММЕСЛИМН(Массив_Сум;Массив_Дат;">="&ДАТА(ячейка_с_годом;ячейка_с_кварталом*3-2;1);Массив_Дат;"<="&КОНМЕСЯЦА(ДАТА(ячейка_с_годом;ячейка_с_кварталом*3-2;1);2))
Данная ф-ия выглядит очень угрожающе, к тому же каждый раз писать её замучаешься, поэтому захотелось написать пользовательскую ф-ию с 4 аргументами суммзакв (Массив_Сум;Массив_Дат;ячейка_с_годом;ячейка_с_кварталом)
Первая идея-скопировать формулу и посмотреть что выдаст макрокеродер, но получившееся чудо мне не получилось преобразовать в работающую ф-ию, получилось что-то по типу:
Пожалуйста, помогите допилить функцию и разобраться, как писать собственные функции на основе стандартных.
Спасибо.
P.S. Файл выложить не могу, так как на работе все заблочено.
Решение задачи: «Создание пользовательской функции по нахождению суммы за квартал»
textual
Листинг программы
Function Суммзакв(Список_Сумм As Range, Список_Дат As Range, Год As Range, Квартал As Range) Dim i1, i2 As String, i As Long i = DateSerial(Год.Value, Квартал.Value * 3 - 2, 1) i1 = ">=" & i i2 = "<=" & WorksheetFunction.EoMonth(i, 2) Суммзакв = WorksheetFunction.SumIfs(Список_Сумм, Список_Дат, i1, Список_Дат, i2) End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д