5

1 つの Excel シートで複数のピボット テーブルのデータ ソースを同時に更新する簡単な方法はありますか?

すべてのピボット テーブルは同じ名前付き範囲を参照しますが、同じピボット テーブルを持つが別の名前付き範囲にアクセスする 2 番目のワークシートを作成する必要があります。

理想的には、個々のピボット テーブルを手動で更新するのではなく、ある種の検索と置換操作 (数式で実行できるように) を実行できるようにしたいと考えています。

助言がありますか?

4

4 に答える 4

12

次の VBA コードは、1 つのワークシートのすべてのピボット テーブルのデータ ソースを変更します。

Sheet2パラメータを新しいピボット テーブルを含むシートの名前に更新し、パラメータをData2新しい名前付き範囲に更新する必要があります。

Sub Change_Pivot_Source()

    Dim pt As PivotTable

    For Each pt In ActiveWorkbook.Worksheets("Sheet2").PivotTables
             pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create _
                (SourceType:=xlDatabase, SourceData:="Data2")
    Next pt

End Sub
于 2010-03-26T15:05:26.363 に答える
1

VBAを使用する意思があると仮定すると、これは適切な場合があります。

各シートのピボットテーブルコレクションを反復処理すると、その投稿に示されている方法を使用してデータソースを修正できるはずです。構文は、セルの範囲ではなく名前付き範囲を使用する場合と非常によく似ている必要があります。

于 2010-03-26T11:59:45.837 に答える
0

この VBA マクロ コードを使用して、ピボット テーブルのデータ ソース範囲を動的に変更するから適応:

  1. メソッドを介して設定されるプロパティを設定できます。PivotTable.SourceDataChangePivotCache
  2. 新しい を作成するにはPivotCache、 を呼び出しますActiveWorkbook.PivotCaches.Create
  3. SourceTypeaと aRangeを asに渡す必要がありますSourceData
  4. 最後に、更新したら、必ず呼び出しRefreshTableて変更を適用してください。

ワークブック内のすべてのピボット テーブルを自動的に検索して更新する例を次に示します。

Sub AdjustPivotDataRange()
    Dim pt As PivotTable, pc As PivotCache
    Dim dataSheet As Worksheet, ws As Worksheet
    Dim startPoint As Range, dataSource As Range, newRange As String

    ' get worksheet with data
    Set dataSheet = ThisWorkbook.Worksheets("Sheet1")

    ' Dynamically Retrieve Range Address of Data
    Set startPoint = dataSheet.Range("A1")
    Set dataSource = dataSheet.Range(startPoint, startPoint.SpecialCells(xlLastCell))
    newRange = dataSheet.Name & "!" & dataSource.Address(ReferenceStyle:=xlR1C1)

    ' create new PivotCache
    Set pc = ActiveWorkbook.PivotCaches.Create( _
               SourceType:=xlDatabase, _
               SourceData:=newRange)

    ' loop through all tables in all sheets
    For Each ws In ActiveWorkbook.Worksheets
        For Each pt In ws.PivotTables

            ' update pivot source and refresh
            pt.ChangePivotCache pc
            pt.RefreshTable

        Next pt
    Next ws

End Sub

"Sheet1"データソースがある場所に 置き換えるだけです。

于 2016-03-10T08:56:59.317 に答える