как создать отчет между двумя датами, которые связаны с ячейками, которые связаны с диапазонами ячеек на нескольких листах - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь создать «Генератор отчетов» в Excel, используя командную кнопку (VBA), чтобы создать отчет после ввода диапазона дат, который я хочу, в две ячейки, лист1 имеет значения В2 и D2, которые содержат только даты (ОТ и ДО), которые являются периодом с 01.01.2009 по 31.12.129

я пытался связать две даты с другими 12 листами (каждый месяц) на каждом листе каждый день содержит 50 строк и 40 столбцов Начиная с даты дня в ячейках B2, B52, B102, B152 ... ETC.

я успешен в выполнении следующего (легкая часть) Используя кнопку команды (VBA) в таблице месяцев, чтобы показать только 50 строк нужного мне дня, я смог скрыть ненужные строки после выбора даты в ячейке A1 (с раскрывающимся списком дат) и нажатия кнопки рядом с кнопкой это в ячейке A2, используя количество дат (43466 = 01.01.2009, 43467 = 01.02.2017 ... и т. д.) Пример кода VBA ниже (он состоит из 1000 строк, каждый лист содержит около 100 строк, с кнопкой «обновить» и показать только день, который я хочу)

Мне не удалось выполнить следующее (сложная часть) пробуя разные формулы и vba, чтобы связать две даты на листе 1 (B2 и D2) с конкретной ячейкой на конкретном листе для использования в качестве ОТ и ТО при создании отчета, и связать ячейку с диапазоном ниже ее с помощью OFFSET, и использовать COUNTIF для подсчета конкретные данные в каждом столбце

Private Sub CommandButton1_Click()

    Dim TriggerCell As Range
    Set TriggerCell = Range("C1")

    If TriggerCell.Value = "Show Entire Month" Then
        Rows("2:1644").Hidden = False
    ElseIf TriggerCell.Value = 43466 Then
        Rows("2:1644").Hidden = True
        Rows("2:54").Hidden = False
    ElseIf TriggerCell.Value = 43467 Then
        Rows("2:1644").Hidden = True
        Rows("55:107").Hidden = False
    End If

End Sub

я ожидаю вывод в ячейках под основным листом (sheet1) рассчитать интервалы между указанными датами и подсчитать конкретные данные, которые были введены, и подготовить их, затем сгенерировать диаграммы на основе этих результатов и, если возможно, создать полностью автоматический генератор отчетов

enter image description here

1 Ответ

0 голосов
/ 29 мая 2019

Это мой первый / быстрый подход.

Сначала прочитайте эту информацию, поскольку существуют некоторые недостатки в зависимости от объема данных, с которыми вы имеете дело: http://www.mcgimpsey.com/excel/threedsumif.html

Вы можете воспользоваться последним предложением, приведенным в ссылке, и создать трехмерную формулу с помощью счетчиков

Шаги, которые я сделал для создания примера:

1 - добавить имена листов в G3: G5

2 - Добавлена ​​формула в ячейку D3:

=SUMPRODUCT(COUNTIFS(INDIRECT(""&G3:G5&"!$C:$C");">="&$B$3;INDIRECT(""&G3:G5&"!$C:$C");"<="&$C$3;INDIRECT(""&G3:G5&"!$D:$D");D$2))

enter image description here

Это основывалось на настройке каждого листа:

enter image description here

Ключевым моментом здесь является использование функции countifs, которая позволяет фильтровать даты с помощью> = или <= и включать другие критерии (включая - и). </p>

Примечание. Как отмечалось на нескольких форумах, продукт Sumproduct является нестабильным и имеет тенденцию замедлять работу рабочих книг, если он используется в диапазонах, включающих много ячеек.

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

Если это поможет, не забудьте пометить ответ, чтобы он мог помочь и другим

...