我试图在Excel中使用命令按钮(VBA)创建一个“报告生成器”,以便在两个单元格中输入我想要的日期范围后生成报告, sheet1在B2和D2处,仅包含日期(从&到),范围从1/1/2019到31/12/2019
我尝试将两个日期链接到其他12张纸(每个月) 在每张纸上,每天包含50行40列 从单元格B2,B52,B102,B152 ... ETC中的日期开始。
我成功完成了以下工作(简单的部分) 使用月份工作表中的命令按钮(VBA)仅显示我想要的一天的50行,在单元格A1中选择日期(带有日期下拉列表)并单击旁边的命令按钮后,我能够隐藏不需要的行使用日期数将其放在单元格A2中(43466 = 1/1/2019,43467 = 2/1/2019 ...等) 下面的VBA代码示例(超过1000行,每张包含100行左右,带有命令按钮“刷新”并仅显示我想要的日期)
我无法完成以下任务(困难的部分) 尝试使用不同的公式和vba将工作表1(B2和D2)中的两个日期链接到特定工作表中的特定单元格,以用作生成报告中的FROM和TO,并使用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)下的单元格中 计算指定日期之间的范围,并对输入的特定数据进行计数并生成数据,然后根据这些结果生成图表,并在可能的情况下创建一个全自动报告生成器
答案 0 :(得分:0)
这是我的第一个/快速方法。
请先阅读此信息,因为根据要处理的数据量有一些缺点:http://www.mcgimpsey.com/excel/threedsumif.html
您可以使用链接中给出的最后一个建议,并使用countifs创建3D公式
我创建示例的步骤:
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))
这是基于每个工作表中的设置:
此处的关键是使用countifs函数,该函数允许您使用> =或<=过滤日期并包括其他条件(包括-和)。
注意:如几个论坛所述,Sumproduct易变,如果在包含大量单元格的范围内使用Sumproduct,则往往会减慢工作簿的速度。
我需要知道您如何更新报告的数据以及要处理多少数据才能提出其他方法。
如果这有帮助,请记住标记答案,这样也可以帮助其他人