我正在Excel 2007中为我的工作制作一套报告 我得到了一组原始数据,它被组织成一个excel表。 这个原始数据会发生变化,因此我试图制作的报告需要允许这样做。 我还获得了一组模板图表。 这些将用于分别反映原始数据中22个不同组的结果。对于每个组,图表是相同的,但必须为每个组创建一个新的工作表(带有一组图表)。
我花了很多时间试图这样做,我想我会以错误的方式解决这个问题。 这是我做的一个宏的摘要,它接近给我最终结果(我最终复制并粘贴所有组)。
现在,对于每个组,我都有一个图表工作表和工作表,其中包含复制的筛选结果。然后,我为图表数据制作了第三张表。此工作表有许多公式,可以对每个图表的筛选数据运行计算。图表引用了这些。
这真的是最简单的方法吗?复制每个组的宏有很多工作要做。为每个组的每个图表分配数据。另外,我现在在工作簿中有67个工作表。这是透视表可以做得更容易吗?
答案 0 :(得分:0)
我假设这些组是预定义的?如果是这样,我会创建动态电子表格。
在主页面上创建一个过滤器并添加一个子程序,如:
Public Sub SetAutoFilter(ByVal GroupName As String)
Me.AutoFilterMode = False
Dim intRow As Long: intRow = Me.Range("B65536").End(xlUp).Row
If intRow = 1 Then Exit Sub 'nothing to filter
With Me.Range(Cells(1,1), Cells(intRow, 23)) '23 columns
.AutoFilter
.AutoFilter Field:=1, Criteria1:=GroupName
End With
End Sub
通过这种方式,您将拥有一个过滤数据的代码,而不必一遍又一遍地复制它。
使用下拉列表创建第二个工作表,其中包含所有组和图表。在下拉列表中选择后,您可以从第一步调用程序员。
最棘手的一点 - 我不知道你的计算有多复杂,但可能你想写另一个子程序来处理来自第一个工作表的过滤数据。例程将计算输出到第三个电子表格(如果需要可以隐藏),这样您就可以轻松验证这些值。
简单的求和/平均/计数等将如下所示:
GetPositionCount = Application.WorksheetFunction.Subtotal(2, Me.Columns(7))
适用于过滤后的数据。
最后,您必须将图表连接到计算数据。
可选步骤,但用户似乎非常亲近。添加另一个按钮,一次打印所有报告。它非常简单 - 只需循环遍历组,显示报告并触发:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, To:=1
HTH。 (代码取自现实生活中的解决方案,所以希望它有效)