Excel 2013:一张工作表(BELOW)上的多个数据透视表

时间:2013-02-27 10:18:38

标签: excel powerpivot

我需要在同一个excel表中创建一个带有多个数据透视表的仪表板。

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

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

我已经在2013年的Microsoft Techdays上看到了一个例子,但我不记得这个方法了。 (Excel 2013中有一个复选框)

谢谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

End Sub

答案 2 :(得分:0)

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

有关更多信息,请参见以下链接:
how to activate powerview

microsoft tutorial on powerview

excel powerview combined with sharepoint