VBA在数据中的某个点插入行

时间:2017-11-13 19:13:28

标签: excel vba excel-vba

我在我的数据上面插入了这个数据透视表。数据可以是不同的长度,因此数据透视表和长度不同。所以我所做的就是把数据放在表格上,比如第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个空白行,但我不知道如何确定我的数据透视表结束的位置或我的数据开始的位置。

enter image description here

所以我希望它看起来像^^^^,但是现在第7行和第8行不在那里,我的数据被推到我的数据透视表上。任何帮助,请欣赏!

我在想某人喜欢使用Rows.Count + 1或其他东西找到数据透视表结束的位置。但是我不知道它是如何确定的,因为之后的行中有数据。所以我可能需要找到数据开始时说列A然后在此之前插入行。提前感谢您的帮助!

1 个答案:

答案 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