Создание пользовательской функции по нахождению суммы за квартал - VB

Формулировка задачи:

Уважаемые господа, уже как месяц активно практикуюсь в написании кода в VB (в формах). Более или мене разобрался. Теперь очередь дошла до пользовательских функций, которые основаны на встроенных функциях. Задача следующая: у нас есть лист с 2 столбцами: 1-дата, 2-некое число. Мне необходимо посчитать сумму элементов за квартал. Была написана следующая ф-ия, которая выполняет данное действо: =СУММЕСЛИМН(Массив_Сум;Массив_Дат;">="&ДАТА(ячейка_с_годом;ячейка_с_кварталом*3-2;1);Массив_Дат;"<="&КОНМЕСЯЦА(ДАТА(ячейка_с_годом;ячейка_с_кварталом*3-2;1);2)) Данная ф-ия выглядит очень угрожающе, к тому же каждый раз писать её замучаешься, поэтому захотелось написать пользовательскую ф-ию с 4 аргументами суммзакв (Массив_Сум;Массив_Дат;ячейка_с_годом;ячейка_с_кварталом) Первая идея-скопировать формулу и посмотреть что выдаст макрокеродер, но получившееся чудо мне не получилось преобразовать в работающую ф-ию, получилось что-то по типу:
Public Function Суммзакв(a As Object, b As Object, c As Range, d As Range)
Суммзакв = SumIfs(a.Value, b.Value, ">=" & DateSerial(c.Value, d.Value * 3 - 2, 1), b.Value, "<=" & EoMonth(DateSerial(c.Value, d.Value * 3 - 2, 1), 2))
End Function
Пожалуйста, помогите допилить функцию и разобраться, как писать собственные функции на основе стандартных. Спасибо. P.S. Файл выложить не могу, так как на работе все заблочено.

Код к задаче: «Создание пользовательской функции по нахождению суммы за квартал - VB»

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
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

11   голосов, оценка 4.091 из 5


СДЕЛАЙТЕ РЕПОСТ