【问题标题】:Copy dynamic data range (from PivotTable) from one worksheet and paste to another sheet从一个工作表复制动态数据范围(来自数据透视表)并粘贴到另一个工作表
【发布时间】:2021-03-28 01:56:27
【问题描述】:

我在工作表 2 上有一个宏按钮,在工作表 1 上有我的数据(数据透视表)。我想:

  1. 按下工作表 2 上的宏按钮
  2. 宏清除数据透视表并选择工作表1上的某个字段
  3. 复制工作表 1 上的数据透视表
  4. 粘贴到工作表 2 上的特定单元格

我的宏做了所有事情,但它不复制工作表 1 中的数据,它出于某种原因复制了工作表 2 中的数据。我在 With 语句中有代码,不知道为什么它从活动表(工作表 2)复制数据。

Sub muniButton()

Application.ScreenUpdating = False

' Refresh PivotTable and copy source data
    
    With worksheet1
        .PivotTables("inventoryPivot").ClearAllFilters
        .PivotTables("inventoryPivot").PivotFields("Type"). _
            CurrentPage = "REGIONAL"
        Range("P5:Q5", Range("P5:Q5").End(xlDown)).Copy
    End With
    
' Pasting source data

    worksheet2.Range("outputCorner").Offset(1, 0).PasteSpecial
    Application.CutCopyMode = False

Application.ScreenUpdating = True   

End Sub

我没有在 Range("P5:Q5", Range("P5:Q5").End(xlDown)).Copy 前面包含 .,因为它会给出错误。这不应该从 worksheet1 复制数据,因为它在 With 语句中吗?由于某种原因,它会从 worksheet2 复制数据,因为它是活动表。

谢谢。

【问题讨论】:

  • 这就是两个 . 的用途 - 将 Range() 调用范围限定为 worksheet1。仅供参考,如果您只有一个 .,那就是问题所在。
  • 嗨蒂姆,我有哪两个.?当我在Range("P5:Q5", Range("P5:Q5").End(xlDown)).Copy 前面添加. 时,我收到一个错误。是否应该复制 worksheet1 中的范围,因为它在 With 语句中?
  • .Range("P5:Q5", .Range("P5:Q5").End(xlDown)).Copy 请参阅我对您之前帖子的第一条评论。

标签: excel vba


【解决方案1】:

如果要复制整个数据透视表,可以使用它的 TableRange1 属性。

    With worksheet1.PivotTables("inventoryPivot")
        .ClearAllFilters
        .PivotFields("Type").CurrentPage = "REGIONAL"
        .TableRange1.Copy
    End With

注意,如果您有页面字段,并且您还想复制这些字段,请将 TableRange1 替换为 TableRange2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多