我需要在同一个excel表中创建一个带有多个数据透视表的仪表板。
问题在于,当数据透视表刷新时,它可能会更长(更多行),因此它会发出警告,表示将覆盖所需行以下的行。
我想知道如何配置Excel数据透视表以在数据透视表中添加行而不会覆盖以下内容。
我已经在2013年的Microsoft Techdays上看到了一个例子,但我不记得这个方法了。 (Excel 2013中有一个复选框)
谢谢。
答案 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搜索中的方法查找最后一个数据透视表行:
答案 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