
我有一些運行 SQL 查詢的 VBA 程式碼,將其轉儲到 Excel 2010 電子表格中,並根據資料刷新 2 個資料透視表。我還有 2 個基於資料透視表的資料透視圖,每次更新表格時,圖表上的格式都會遺失。
我按照中的說明進行操作本書第12.3節它建議根據我的格式首選項建立自訂圖表類型,並將其應用於我希望保持這種格式的圖表。這些說明非常有效如果我手動修改數據,然後手動刷新數據透視表 - 圖表保持正確的格式。但是,當我執行這段程式碼時:
For Each pt In NewSheet.PivotTables
pt.RefreshTable
Next
格式立即遺失。
這是之前的數據:
以及我精心製作的圓餅圖:
一旦我更新資料並刷新表:
這就是我得到的:
同樣,如果手動完成,應用自訂圖表樣式將保留格式,但執行 VBA 程式碼會以某種方式重置自訂圖表類型。
答案1
要在不使用資料透視圖的情況下完成此任務,您所需要的只是一個動態命名範圍和一個簡單的(如果格式粗暴的)圖表。
1) 使用下列公式建立定義的名稱:Series_A=OFFSET(Sheet!B1,0,0,COUNT(A:A),1)
,其中- Sheet1!B1 指的是資料透視表中的第一個計數儲存格(或任何其他引用,如果您熟悉OFFSET) - Count(A:A) 是包含行的列標籤
2) 使用系列=Series_A(以及您需要的任何其他圖表)建立圖表。
當您更新資料透視表時,定義的名稱將引用行標籤列中的擴充/收縮值,並且僅傳回計數列中的值。不需要 0、#N/A 或輔助列。