'元データの範囲を取得
Set A = Worksheets("元データ").Range("A1").CurrentRegion
'データソースを変更する
ActiveSheet.PivotTables(1).ChangePivotCache ActiveWorkbook.PivotCaches.Create(xlDatabase, A)
では、解説していきます。
VBAでピボットテーブルのデータソースの変更をする
VBAで、ピボットテーブルのデータソースの変更をしてみます。
元データの範囲を変更するVBAコード
元データの範囲を変更するVBAコードは、こんな感じになります。
Sub TEST1()
'データソースを変更する
ActiveSheet.PivotTables(1).ChangePivotCache ActiveWorkbook.PivotCaches.Create(xlDatabase, 元データの範囲)
End Sub
「元データの範囲」のところに、ピボットテーブルに反映したい「セル範囲」を入力します。
では、やってみます。
元データの範囲を変更してみる
VBAで、元データの範囲を変更してみます。
VBAコードは、こんな感じになります。
Sub TEST2()
'元データの範囲を取得
Set A = Worksheets("元データ").Range("A1").CurrentRegion
'データソースを変更する
ActiveSheet.PivotTables(1).ChangePivotCache ActiveWorkbook.PivotCaches.Create(xlDatabase, A)
End Sub
最初に、ピボットテーブルを作成しておきます。
ピボットテーブルを作成しておく
元データに、手動でデータを追加します。
手動でデータを追加
では、VBAコードを実行してみます。
VBAで元データの範囲ができた
VBAで、ピボットテーブルの元データの範囲を変更できました。
データの追加と範囲の変更をしてみる
次は、VBAで、データの追加と範囲の変更をしてみます。
VBAコードは、こんな感じになります。
Sub TEST3()
'元データの最終行を取得
Dim LastRow
LastRow = Worksheets("元データ").Cells(Rows.Count, "A").End(xlUp).Row
'追加データを元データに貼り付け
Worksheets("追加データ").Range("A1").CurrentRegion.Copy Worksheets("元データ").Cells(LastRow + 1, "A")
'元データをオブジェクトに格納
Dim A
Set A = Worksheets("元データ").Range("A1").CurrentRegion
'データソースを変更する
ActiveSheet.PivotTables(1).ChangePivotCache ActiveWorkbook.PivotCaches.Create(xlDatabase, A)
End Sub
ピボットテーブルを作成してきます。
ピボットテーブルを作成しておく
シートを追加しておいて、追加したいデータを記載しておきます。
追加したいデータを記載しておく
では、VBAコードを実行してみます。
VBAで元データにデータが追加されます。
VBAで元データに追加できた
VBAでピボットテーブルの元データの範囲が変更されます。
VBAで元データの範囲が変更できた
VBAで、ピボットテーブルの元データの範囲が変更されました。
こんな感じで、VBAを使うと、元データの範囲を簡単に変更できます。
VBAで元データが変更されたら自動で範囲を変更してみる
VBAで、元データが変更されたら、自動で元データの範囲を変更する、というのを作ってみます。
自動でデータソースの変更をするVBAコード
元データが変更されたら、自動でデータソースの変更をするVBAコードは、こんな感じになります。
「元データ」のシートモジュールに、VBAコードを記載します。
'シートが変更されたら実行(「元データ」シートのモジュールに記載する)
Private Sub Worksheet_Change(ByVal Target As Range)
'元データの範囲を取得
Set A = Range("A1").CurrentRegion
'データソースを変更する
Worksheets("Sheet1").PivotTables(1).ChangePivotCache ActiveWorkbook.PivotCaches.Create(xlDatabase, A)
End Sub