• 締切済み

Excel マクロ ピボットテーブル範囲選択

マクロで、ピボットテーブルでの範囲のコーディングの仕方について、どなたかどうぞ教えてください。 列・行とも行が毎回異なります。 どのようにしたら、毎回異なる範囲を、「SourceData:=」に反映させることが出来ますか? マクロ初心者ですが、なんとか作業効率をUPさせたいと思っています。 どうぞよろしくお願い致します。 自動作成されたVBAは以下の通りです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R3C2:R1767C52").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル1" ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル1").SmallGrid = False

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

この質問は聞きたいことを明確にしてない。 (1)ピボットを実行するとき、事実上で作られている範囲に従って、範囲とするなら Sub test01() Range("a2").CurrentRegion.Select MsgBox Selection.Address End Sub を参考にすれば良い。 このSelectionが使えるだろう。 このA2セルは見だしセルなどで、毎回動かない部分だと、看做せる場合です。普通では、リストの最上セルは見出して見だし行で、固定されているのではないかな。 こういうセルが無い場合は改めて質問してください。 ーー (2)操作者に範囲指定させるなら Sub test02() Dim rng As Range Set rng = Application.InputBox("範囲指定", Type:=8) MsgBox rng.Address End Sub を参考にしてください。 これらは「エクセル VBA 範囲指定」でGoogleででも照会すれば出てくる、ありふれた課題(VBAをやり始めたら直ぐ勉強すべき課題)ですよ。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html の後半など。 ーー 上記のほかに UsedRange  End(xlup)  最終行の察知 なども使えるかもしれない。それぞれメリット・デメリットがあるので、それを勉強してください。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

マクロの記録を利用されるなら、可変のテーブル範囲を名前定義してこれをSourceDataの代入するのが簡単かもしれません。 Sheet1のB3セルから始まるリストを可変範囲にするなら、「挿入」「名前」「定義」(2007なら「数式」「名前の定義」)で例えば「hanni」と名前を付け、参照範囲に以下の式を入力します。 =OFFSET(Sheet1!$B$3,0,0,COUNTA(Sheet1!$B:$B),COUNTA(Sheet1!$3:$3)) そしてマクロコードの「"Sheet1!R3C2:R1767C52"」の部分を「hanni」にしてください。

関連するQ&A

専門家に質問してみよう