2015-08-09 67 views
0

我每週都會替換源數據,並且附加了許多數據透視表。但是,當我刷新表格時,他們開始丟失一些數據。所以,我繼續並記錄了一些「宏」,以便每次創建和替換新的數據透視表。粘貼的區域將保持不變,我給他們足夠的周圍空間以避免重疊。不幸的是,我收到很多錯誤,並且對VBA根本不擅長。我只知道它來自論壇等用於多個數據透視表的VBA腳本

源數據的「了CopyData」 國別數據透視表應該去「國家」

所以我的問題是:1。 我如何創建一個腳本VBA創建並替換數據透視表,並且可以在很多時候使用(因此可能從刪除舊數據庫開始?) 2.如何保持數據透視表的名稱一般?我不知道下透視表將被調用時,它運行

任何幫助將是巨大的!

下面是我對「宏」之一的代碼,它應該創建並替換兩個數據透視表。

Sub Pivots_Country() 
' Pivots_Country Macro 
' 
' 
    Range("B215").Select 
    ActiveWorkbook.Worksheets("Region").PivotTables("PivotTable10").PivotCache. _ 
     CreatePivotTable TableDestination:="Sheet1!R2C2", TableName:="PivotTable10" _ 
     , DefaultVersion:=xlPivotTableVersion14 
    Sheets("Sheet1").Select 
    Cells(2, 2).Select 
    ActiveSheet.PivotTables("PivotTable11").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable11").PivotFields("storeId"), "Count of storeId", xlCount 
    With ActiveSheet.PivotTables("PivotTable11").PivotFields("NewCountry") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    Sheets("CopyData").Select 
    Range("B10").Select 
    ActiveWorkbook.Worksheets("Sheet1").PivotTables("PivotTable11").PivotCache. _ 
     CreatePivotTable TableDestination:="Sheet1!R4C6", TableName:="PivotTable12" _ 
     , DefaultVersion:=xlPivotTableVersion14 
    Sheets("Sheet1").Select 
    Cells(4, 6).Select 
    With ActiveSheet.PivotTables("PivotTable12").PivotFields("plan") 
     .Orientation = xlColumnField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("PivotTable12").PivotFields("planCode") 
     .Orientation = xlPageField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("PivotTable12").PivotFields("NewCountry") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    ActiveSheet.PivotTables("PivotTable12").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable12").PivotFields("storeId"), "Count of storeId", xlCount 
    ActiveWindow.SmallScroll Down:=-7 
    Range("B2:C56").Select 
    Selection.Copy 
    Sheets("Country").Select 
    Range("B4").Select 
    ActiveSheet.Paste 
    ActiveWindow.SmallScroll Down:=7 
    ActiveWindow.SmallScroll ToRight:=-2 
    ActiveWindow.SmallScroll Down:=-2 
    ActiveWindow.SmallScroll ToRight:=-1 
    ActiveWindow.SmallScroll Down:=-1 
    ActiveWindow.SmallScroll ToRight:=-2 
    ActiveWindow.SmallScroll Down:=-30 
    Sheets("Sheet1").Select 
    ExecuteExcel4Macro "(""PivotTable12"",""planCode"",3,FALSE,TRUE)" 
    Range("F2:P52").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Country").Select 
    ActiveWindow.SmallScroll ToRight:=3 
    ActiveWindow.SmallScroll Down:=-1 
    ActiveWindow.SmallScroll ToRight:=2 
    Range("R3").Select 
    ActiveSheet.Paste 
    ActiveWindow.SmallScroll Down:=1 
    Range("Q15").Select 
    Sheets("Sheet1").Select 
    Cells.Select 
    Range("F2").Activate 
    Application.CutCopyMode = False 
    Selection.Delete Shift:=xlUp 
    Range("J11").Select 
    Sheets("CopyData").Select 
End Sub 
+0

您是否無法通過選擇整列作爲數據源來保留現有的數據透視表? – pnuts

+0

沒有,沒有工作。我得到的第一個錯誤是關於第一行中的Active.Workbook.Worksheets(「區域」)。我有5個左右的宏,它們在不同的時間和不同的場合似乎都是錯誤的。沒有過濾器是數據的一部分,我試圖在運行宏之前刪除舊的數據透視表,所以我不會得到那個錯誤。但我似乎仍然陷入一片混亂。 – jf12345

+1

我的意思是沒有VBA - 我認爲@HarveyFrench已經詳細說明了。 – pnuts

回答

0

你真的不需要重新創建數據透視表。在刷新數據後,您需要找出數據透視表中缺少數據的原因。這應該是一個很少的工作。

我懷疑,當刷新新數據比老數據更行的數據透視表都可以從一個範圍和數據,所以數據透視表錯過了額外行。

解決這個問題的最好辦法,以確保您透視表是基於對所有你把板材當前和未來的數據足以行的範圍。

檢查數據透視表。

  1. 點擊透視表

  2. 帶狀

    >透視表工具>分析>數據>更改數據源,你可以看到的範圍是什麼(修改)

請讓我知道你是怎麼辦的。

在未來你可能會考慮使用Excel表格(也稱爲ListObjects)

例如

  1. 選擇擁有你的數據範圍

  2. 點擊功能區>插入>表格按鈕將範圍轉換爲Excel表格。

  3. 改變你的數據透視表如何刷新你的數據表

  4. 變化來引用數據。

由於您是新手,我現在不會使用Excel表格,先讓它工作,然後將其轉換爲使用它們。

我希望這會有所幫助。 Harvey

+0

PS。歡迎來到堆棧溢出。 – HarveyFrench

+0

嗨哈維。感謝您的答覆!因此,在我測試新數據之前,我只是將我的舊數據複製到工作簿中,使用宏清理它,然後刷新所有的支點。數據是一樣的,沒有更多的增加。在我讓宏能夠擁有動態範圍之前,我只會喜歡一個生成表的宏。基本上,宏需要從工作表中獲取數據,將其放在一個新數據庫中並進行修改,然後將該數據透視表複製到舊數據表中以代替舊數據透視表。如果我沒有意義,請讓我知道,因爲我知道這可能會讓人困惑。 – jf12345

+0

爲什麼你需要用宏創建它們?我明白你在說什麼,但這不是最好的辦法。 – HarveyFrench