Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Charts 如何在excel中为一组过滤后的原始数据创建多个图表/报告?_Charts_Excel_Reporting_Vba - Fatal编程技术网

Charts 如何在excel中为一组过滤后的原始数据创建多个图表/报告?

Charts 如何在excel中为一组过滤后的原始数据创建多个图表/报告?,charts,excel,reporting,vba,Charts,Excel,Reporting,Vba,我正在用Excel 2007为我的工作制作一套报告。 我得到了一组原始数据,这些数据被组织成一个excel表格。 这些原始数据将发生变化,因此我试图制作的报告需要允许这种情况。 我还得到了一套模板图表。 这些将分别用于反映我的原始数据中22个不同组的结果。对于每个组,图表都是相同的,但是必须为每个组创建一个新的工作表(带有一组图表) 我已经花了很多时间试图这样做,我想我走错了方向。 这是我制作的一个宏的摘要,它接近于给出最终结果(我最终复制并粘贴了所有组) 仅为组筛选原始数据 复制整张纸 仅作为

我正在用Excel 2007为我的工作制作一套报告。
我得到了一组原始数据,这些数据被组织成一个excel表格。 这些原始数据将发生变化,因此我试图制作的报告需要允许这种情况。 我还得到了一套模板图表。 这些将分别用于反映我的原始数据中22个不同组的结果。对于每个组,图表都是相同的,但是必须为每个组创建一个新的工作表(带有一组图表)

我已经花了很多时间试图这样做,我想我走错了方向。 这是我制作的一个宏的摘要,它接近于给出最终结果(我最终复制并粘贴了所有组)

  • 仅为组筛选原始数据
  • 复制整张纸
  • 仅作为值粘贴到其他工作表。(这给了我一个使用太多资源的错误)
  • 现在,对于每个组,我都有一个图表工作表和一张表,其中包含复制的筛选结果。然后,我为图表数据制作了第三张表。此工作表中有许多公式,可以对每个图表的过滤数据进行计算。图表参考了这些


    这真的是做这种事情最简单的方法吗?为每个组复制宏已经做了很多工作。为每组的每个图表分配数据。另外,我的工作簿中现在有67张工作表。这是pivot表可以做得更容易的事情吗?

    我假设这些组是预定义的?如果是这样,我会创建动态电子表格

  • 在主页面上创建一个过滤器并添加一个子例程,如:

    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
    

  • 嗯。(代码取自现实生活中的解决方案,因此希望它能工作)

    如果不知道原始数据结构,很难给出有用的答案。听起来这是一个很好的超级用户问题,因为它与编程无关。