Создание пользовательской функции по нахождению суммы за квартал - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы