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条答案
按热度按时间bxfogqkk1#
每当每个工作表有多个数据透视表时,我
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
rkttyhzu2#
我最近遇到了这个问题,并构建了以下内容。当然,要使其工作,必须满足原则上两个表可以放在一个工作表上的前提条件。我要做的是,在两个表之间构建足够的空间(=行),并在刷新后隐藏表之间剩下的行。因此,它确实需要VBA,并可以例如在PivotTable_Update事件上执行。
末端子组件
b1zrtrql3#
如果你使用的是专业版的excel,你可以使用powerview.来创建 Jmeter 板。当使用powerview时,你可以限制数据透视表使用的空间。
更多信息,请参见以下链接:
how to activate powerview
microsoft tutorial on powerview
excel powerview combined with sharepoint