組織の複数の異なる詳細を調べているスプレッドシートがあります。すべてのフィールドは、すべてのデータセットに存在する「コストセンター」とは別の異なるデータセットでは異なります。Excel 2010 VBA - スライサー値が存在するかどうかを確認します。
各データセットには、独自のピボットテーブルとスライサーのセットがあります。私は選択されたスライサーと一致する各テーブルのためのcostcentreスライサーを作るように探しています。
両方のスライサーが同じ値を持っていても、変更されたスライサーが選択されたスライサーの値を持たない場合はすべての値を選択しています。したがって、状態を変更する前に値が存在するかどうかをチェックし、状態が変化しない場合は複数の値を選択できますが、値が存在するかどうかを確認する方法はありませんそれ以外の場合は、コードの各ビットごとに次の値に移動します。どのように行うか、元の目標を達成するための簡単な方法についてのアドバイスは、非常に高く評価されます。
以下は私のVBAコードです。私は実際にVBAのいずれかの経験を持っていないのでご注意ください、これは、このサイト上で答えを検索し、でスロー試行錯誤の少しと関連するように見えたビットをコピーすることから構成されています。
Sub test()
Dim sc1 As SlicerCache
Dim sc2 As SlicerCache
Dim si1 As SlicerItem
Dim si2 As SlicerItem
Set sc1 = ThisWorkbook.SlicerCaches("Slicer_CC1")
Set sc2 = ThisWorkbook.SlicerCaches("Slicer_CC")
Application.ScreenUpdating = False
Application.EnableEvents = False
sc2.ClearManualFilter
For Each si1 In sc1.SlicerItems
sc2.SlicerItems(si1.Name).Selected = si1.Selected
On Error Resume Next
Next si1
MsgBox "Update Complete"
clean_up:
Application.EnableEvents = True
Application.ScreenUpdating = True
Exit Sub
err_handle:
MsgBox Err.Description
Resume clean_up
End Sub
スライサーは、ピボット・キャッシュを共有している限り、複数のピボット・テーブルに接続できます。ピボットテーブルの各セットは異なるデータセットに基づいているため、ピボットキャッシュは異なります。あるPivotCacheに値が存在し、他のPivotCacheに値がない場合は、CostCentreフィールドに問題が発生します。 N.b. PowerPivotへのアクセス権がある場合、PowerPivotを使用することができれば、データセットをリンクすることができるため、すぐに問題を解決できます。 –
確かに、私の計画がパワーピボットに頼っていたのですが、私たちのITサポート機能がアドインを削除したことが判明しました(すべてパワーアドバンテージに対するランダムな復讐だけでなく、それらのいずれかをインストールします。したがって、私がVBAの世界を掘り下げる必要があるのはわかっています:-) – LCousins
Slicerにはアイテムが存在し、最初に設定されたSlicerではなく(たとえば、どこから同期したいかなど)その項目を選択する必要がありますか?同じアイテムがない場合はどうなりますか? –