2012-07-16 85 views
1

我在Excel中的不同工作表中有多個數據透視表(每個工作表1個)。我想將它們全部複製到一張新的工作表中,但我希望它們在每個之間有兩排間隔的情況下在另一個之下。工作表之間複製數據

我的代碼從一個工作表複製到另一個表,但我無法弄清楚如何複製到另一個相同的工作,而不將其粘貼在上表....

'Copy table 1 
Sheet1.PivotTables(1).TableRange2.Copy 
With Sheet7.Range(Sheet1.PivotTables(1).TableRange2.Address) 
    .PasteSpecial xlPasteValuesAndNumberFormats 
    .PasteSpecial xlPasteColumnWidths 
End With 
Application.CutCopyMode = False 

每數據透視表在高度(和寬度)上可以是動態的,所以後續表的偏移量將取決於前一個表的大小......

有沒有人有任何想法如何實現這一點?

+0

查找使用此代碼的最後一行http://stackoverflow.com/questions/11169445/error-finding-last-used-cell-in-vba然後粘貼下一個樞軸後。 – 2012-07-16 20:44:16

+0

如何修改上述代碼以在特定點粘貼? – user559142 2012-07-16 20:56:10

+0

過去第1行的第1個表格,然後找到最後一行。加2。將下一個表格粘貼到該行中。再次找到最後一行。加2。將下一個表格粘貼到該行中。重複過程,直到粘貼所有表格。 – 2012-07-16 20:59:32

回答

0
Sub CopyPT() 

Dim rngDest As Range 
Dim sht As Worksheet, tr As Range 

    Set rngDest = Sheet7.Range("B2") 

    For Each sht In ThisWorkbook.Worksheets 

     If sht.Name <> Sheet7.Name Then 
      If sht.PivotTables.Count = 1 Then 
       Set tr = sht.PivotTables(1).TableRange2 
       'Debug.Print sht.Name, tr.Rows.Count 
       tr.Copy 
       With rngDest 
        .PasteSpecial xlPasteValuesAndNumberFormats 
        .PasteSpecial xlPasteColumnWidths 
       End With 
       Set rngDest = rngDest.Offset(tr.Rows.Count + 2, 0) 
      End If 
     End If 

    Next sht 

    Application.CutCopyMode = False 

End Sub