我在我的数据上面插入了这个数据透视表。数据可以是不同的长度,因此数据透视表和长度不同。所以我所做的就是把数据放在表格上,比如第30行。然后我将我的数据透视表插入顶部。我接下来要做的是我有一些代码来删除我的数据和数据透视表之间的所有空白行。
sub foo()
dim r As Range, rows As Long, i As Long
Set r = ActiveSheet.Range("A1:Z50")
rows = r.rows.Count
For i = rows To 1 Step (-1)
If WorksheetFunction.CountA(r.rows(i)) = 0 Then r.rows(i).Delete
Next
End Sub
此代码将删除所有空行并且似乎正常工作。由于这将所有内容放在一起,我想要做的只是在我的数据透视表和我的数据之间放置2个空白行,但我不知道如何确定我的数据透视表结束的位置或我的数据开始的位置。
所以我希望它看起来像^^^^,但是现在第7行和第8行不在那里,我的数据被推到我的数据透视表上。任何帮助,请欣赏!
我在想某人喜欢使用Rows.Count + 1
或其他东西找到数据透视表结束的位置。但是我不知道它是如何确定的,因为之后的行中有数据。所以我可能需要找到数据开始时说列A然后在此之前插入行。提前感谢您的帮助!
答案 0 :(得分:2)
尝试这些方面:
Public Sub Answer()
Dim dataTopRowIndex As Integer
Dim ptBottomRowIndex As Integer
With ActiveSheet 'Note: use your worksheet's CodeName here instead, e.g. With Sheet1 (Active[anything], Activate, Select, Selection: evil).
dataTopRowIndex = .Cells(1, 1).End(xlDown).Row
With .PivotTables("PivotTable1").TableRange1 'Replace PivotTable1 by your PT's name.
ptBottomRowIndex = .Row + .Rows.Count - 1
End With
If (dataTopRowIndex - ptBottomRowIndex - 1) > 2 Then
.Range(.Rows(ptBottomRowIndex + 1), .Rows(dataTopRowIndex - 3)).EntireRow.Delete
End If
End With
End Sub