Excel 2010 ピボット グラフの書式設定を維持するにはどうすればよいですか?

Excel 2010 ピボット グラフの書式設定を維持するにはどうすればよいですか?

SQL クエリを実行し、それを Excel 2010 スプレッドシートにダンプし、データに基づいて 2 つのピボット テーブルを更新する VBA コードがあります。また、ピボット テーブルに基づいて 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=Series_A (および必要なその他の項目) を使用してチャートを作成します。

ピボット テーブルを更新すると、定義された名前は行ラベル列の拡張/縮小値を参照し、カウント列の値のみを返します。0、#N/A、またはヘルパー列は必要ありません。

関連情報