首页 > 解决方案 > VBA如何复制到表格中的倒数第二个单元格?

问题描述

我有一个包含数据的数据透视表,我需要复制并粘贴除最后一行之外的所有数据,因为它是总数的总和,所以我需要删除它。数据条目的数量因周而异,所以我不能只输入设定的数字。目前我的代码如下所示;

Worksheets("Mobile Summary").Range("A4:F482").Copy 
Worksheets("Sheet1").Range("A1:F479")

但是,我需要直接从不同的数据透视表中复制和粘贴更多数据。因此,例如,我不能只将行设置为 3000。我知道有一个代码可以找到最后一行,尽管我不知道如何解决这个问题。

标签: excelvba

解决方案


要按名称查找数据透视表并删除表的最后一行,请使用Range.Resize 属性。如果工作表上有多个数据透视表,这很有用。

Option Explicit

Sub CopyPivotTableWithoutLastRow()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Tabelle3")

    Dim i As Long
    For i = 1 To ws.PivotTables.Count 'loop throug all pivot tables

        If ws.PivotTables(i).name = "PivotTable1" Then 'determine pivot table by its name
            With ws.PivotTables(i).TableRange1 '= full table
                .Resize(RowSize:=.Rows.Count - 1).Copy 'resize to remove last row then copy
            End With
        End If

    Next i
End Sub

推荐阅读