【问题标题】:Excel 2013 : multiple pivot tables on one sheet (BELOW) each otherExcel 2013:一张纸上的多个数据透视表(下方)彼此
【发布时间】:2025-12-06 17:45:02
【问题描述】:

我需要在同一个 Excel 工作表中创建具有多个数据透视表的仪表板。

问题在于,当数据透视表刷新时,它可能会更长(更多行),因此它会发出警告,指出低于所需数据的行将被覆盖。

我想知道如何配置 Excel 数据透视表以在数据透视表中添加行而不覆盖以下内容。

我已经在 Microsoft Techdays 2013 上看到过一个例子,但我不记得方法了。 (在 Excel 2013 中有一个复选框可以启用)

谢谢。

【问题讨论】:

  • 有一些方法可以禁用覆盖警告,甚至还有一个自动格式复选框,可以确保数据透视表刷新不会覆盖它的样式格式,我一直是开发人员 beta 测试员对于 Excel 2013 几年,并没有看到自动缓冲这些数据透视表的 UI 方法。您是否允许将每个数据透视表放在自己的工作表上(如 Microsoft 建议的那样),并在最后将每个数据透视表汇总到汇总报告表中?我假设您已经知道可以将数据透视表并排放置以避免该问题,但这可能不是一种选择。
  • 我想使用 Excel 将仪表盘部署到 SharePoint 中,因此我不允许使用工作表中的每个数据透视表。
  • 最近遇到了一位 Excel/SP 顾问,让我想起了这篇文章。我们确定这是不可能的,很抱歉我帮不上忙

标签: excel powerpivot


【解决方案1】:

每当我在每个工作表中有多个数据透视表时,我都会

1) 限制数据透视表的行数,例如,我的报告需要滚动 6 个月的值,所以我总是有 6 行,但每个月的值都会提前。在这种情况下,您需要使用 VBA 来“选中”和“取消选中”显示的值。使用在此 Google 搜索中找到的方法来执行此操作:

https://www.google.com/search?q=find+last+used+row#q=excel+pivot+table+vba+to+filter+row+values

2) 每次刷新时,从头开始重新创建每个数据透视表,相应地定位每个数据透视表,方法是删除现有数据透视表,然后自上而下重新创建数据透视表。对于此方法,您需要确定哪一行是数据透视表中的最后一行,以便您可以在其下方重新创建下一行。使用 Google 搜索等方法查找数据透视表的最后一行:

https://www.google.com/search?q=find+last+pivot+table+row

【讨论】:

    【解决方案2】:

    我最近遇到了这个问题,并构建了以下内容。当然,要让它发挥作用,必须满足先决条件,即原则上两张表确实可以放在一张纸上。我要做的是在两个表之间建立足够的空间(=行),并在刷新后隐藏表之间留下的行。所以它确实需要 VBA,例如可以在 PivotTable_Update 事件上执行。

    Private Sub hideRowsBetweenListObjects(sheetName As String)
    Dim tblRowPosition1 As Integer
    Dim tblNrOfRows1 As Integer
    Dim tblRowPosition2 As Integer
    Dim tblNrOfRows2 As Integer
    
    'Initialize
    Application.ScreenUpdating = False
    
    With Worksheets(sheetName).ListObjects(1)
        tblRowPosition1 = .Range.Row
        tblNrOfRows1 = .Range.Rows.Count
    End With
    
    With Worksheets(sheetName).ListObjects(2)
        tblRowPosition2 = .Range.Row
        tblNrOfRows2 = .Range.Rows.Count
    End With
    
    With Worksheets(sheetName)
        If tblRowPosition1 < tblRowPosition2 Then
            .Range(.Cells(tblRowPosition1 + tblNrOfRows1, 1), .Cells(tblRowPosition2 - 4, 1)).EntireRow.Hidden = True
        ElseIf tblRowPosition2 < tblRowPosition1 Then
            .Range(.Cells(tblRowPosition2 + tblNrOfRows2, 1), .Cells(tblRowPosition1 - 4, 1)).EntireRow.Hidden = True
        End If
    End With
    

    结束子

    【讨论】:

      【解决方案3】:

      如果您使用的是专业版的 excel,您可以使用 powerview。创建仪表板。 Wenn 使用 powerview 可以限制数据透视表使用的空间。

      查看以下链接了解更多信息:
      how to activate powerview

      microsoft tutorial on powerview

      excel powerview combined with sharepoint

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。