編集:ピボットキャッシュがリフレッシュする必要があるかどうかを確認する方法はありますか?
Shai - あなたの答えに感謝します。しかし、それは私の目的のためには機能しません。私はいくつかのダミーデータとピボットテーブルを作成し、元のデータのいくつかを変更し、あなたのコードはまだキャッシュがデータと同一であると言いました。これは、範囲内の変更ではなく、全体的な範囲の変更を探しているからです。
私はこのドキュメントを使用しています。特に、下記の使用者のPivotCache.SourceDataメンバーを使用しています。私がやりたいことはできないと思います。私は開いているこの質問を残しておきます
Sub checkCache()
Dim ptTbl As PivotTable, pvtCache As PivotCache
Set ptTbl = Sheets("Sheet2").PivotTables("PivotTable2")
Set pvtCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, ptTbl.PivotCache.SourceData)
If pvtCache = ptTbl.PivotCache Then 'error on this line, cannot compare two pivot caches like this
MsgBox "True"
Else
MsgBox "False"
End If
End Sub
:私が見つけた最高のは、元のソースデータから新しいピボットキャッシュを作成し、これが不可能であるが、その後、何とか直接平等を使用して(それらを比較することです場合の数日間、それ以上に良いアイデアがある。
ショートバージョン
私は、彼らがピボットをリフレッシュする必要があること、ピボットテーブルの基になるデータが変更されたときに、ユーザーに強調表示する必要があるとキャッシュ。私はperformancのためにすべての相互作用のピボットテーブルをリフレッシュすることはできませんe問題。
現時点では、私はIF
の式でピボットテーブルの合計がシート合計と同じであるかどうかを確認していますが、数値以外のデータでは機能しません。より良い方法がありますか?
ロングバージョン
私は以下のように分類されているデータの数千行を持っている以下(すなわち、変更される可能性があり、いくつかのカテゴリと数字)。
Name Category 1 Category 2 Number Number 2 Category 3... etc.
Angela A X 123
Bob A Y 442
Bob A Y 566
Charlie B X 1445
Angela A X 5641231
Dave B Y 435
Dave B Y 45645
Charlie B X 567
私の問題は、私は、ピボットテーブルがリフレッシュ必要がある場合(すなわち、ソースデータは、ピボットキャッシュと異なる場合)チームに(と私)をハイライトしたいということです。
ブックが大きく、計算に時間がかかるので、ユーザーがシートとやりとりするたびに自動的にピボットテーブルを更新したくありません。それは標準的な会社のワークブックです。私はそれをスピードアップするためにいくつかの改良を加えましたが、私は大規模な変更を加えることはできません。
私はSUMIF
などを使ってサマリーテーブルを自動的に更新することができますが、この場合は実行できません。現時点で
、私はちょうどので、ユーザは、ピボットテーブルを更新するためにそれらを伝える鮮やかな赤のセルが表示されます
=IF(total from summing up workbook directly = pivot table total, "Pivot table OK", "Pivot table needs refreshing")
を言ういくつかの明るい赤色条件付き書式設定IF
文を組み合わせています。
私の問題は、これが数値データに対してのみ機能することです。数値以外のデータが変更された場合、ピボット・テーブルはリフレッシュする必要がありますが、この方法は機能しません。
各カテゴリの各ラベルの出現を数えて、ピボット・キャッシュから数え上げるピボット・テーブルに対してこれをチェックすることができますが、これは多くの作業になります。これはExcelやVBAの別の方法で実行できますか?
アプローチは、別のシートにピボットテーブルのデータを保持している表を入れ、その後にVBAを使用して)誰が作ったかどうかを確認することですそのテーブルに変更し、b)そのデータシートが非アクティブ化されたときにピボットを更新する。このようにして、ユーザーはソースデータに複数の変更を加えることができますが、レポートシートに戻ったときにのみ更新されます。それはあなたのために働くだろうか? – jeffreyweir
@jeffreyweirそれは良いアプローチのように聞こえる、私はそれを調べます。本質的には、私はちょうどレポートシートをクリックし、チェックを行うイベントをキャプチャします – Jonathan
@ジョナサンあなたは私の答えを下に読みましたか?私のコードをテストする?どんなフィードバック? –