3

我需要在同一个 Excel 表中创建具有多个数据透视表的仪表板,一个在另一个之下。

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

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

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

谢谢你。

4

3 回答 3

0

每当我每个工作表有多个数据透视表时,我要么

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

于 2014-01-04T17:53:19.340 回答
0

我最近遇到了这个问题,并构建了以下内容。当然,要让它工作,必须满足先决条件,原则上两张表确实适合一张纸。我要做的是在两个表之间建立足够的空间(=行),并在刷新后隐藏表之间留下的行。所以它确实需要 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

结束子

于 2014-06-25T14:55:33.573 回答
0

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

有关更多信息,请参见以下链接:
如何激活 powerview

微软powerview教程

excel powerview 结合sharepoint

于 2019-12-17T20:09:07.693 回答