アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロで、ピボットテーブルでの範囲のコーディングの仕方について、どなたかどうぞ教えてください。

列はM列までで固定です。
行が毎回異なります。
どのようにしたら、毎回異なる範囲を、「SourceData:=」に反映させることが出来ますか?
マクロ初心者ですが、なんとか作業効率をUPさせたいと思っています。
どうぞよろしくお願い致します。

尚、今のマクロは絶対参照になっています。
自動作成されたVBAは以下の通りです。

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"A1:M5372").CreatePivotTable TableDestination:="", TableName:= _
"ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select

A 回答 (1件)

こんにちは。



Dim rng As Range 'データ範囲用Range型変数を準備
'A列を基準にする場合は↓。場合によっては Set rng = Range("a1").CurrentRegion でも可。
Set rng = Range("A1", Range("A65536").End(xlUp).Offset(, 12))
With ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=rng.Address(external:=True))
With .CreatePivotTable(TableDestination:="")
.AddFields RowFields:=rng.Cells(1).Value, ColumnFields:=rng.Cells(2).Value
.PivotFields(rng.Cells(3).Value).Orientation = xlDataField
End With
End With
Set rng = Nothing

な感じで、まずデータ範囲を変数にセットすれば良いです。
上記はActivesheetが対象になりますが、必要に応じてSheetから指定してあげる事もできます。
また、一般機能の[名前の定義]で可変範囲に名前をつける、という方法もあります。
=OFFSET($A$1,,,COUNTA($A:$A),13)
    • good
    • 2
この回答へのお礼

pauNedさま

ご回答ありがとうございました。
お陰様で、A列を基準にする場合で、やってみたところ、出来ました!!!
すごく感激です。
本当にありがとうございます。
これで時間を短縮できます!

お礼日時:2006/04/18 13:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!