• 締切済み

ピボットテーブルをマクロ化

MackyNo1の回答

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

>ただ、ピボットテーブルまではできるのですが、 100 t 60 200 t 70 300 t 80 100 t -60 200 t -100 300 t -30 のように並び替えるのにはどうすればよろしいでしょうか? 上記の質問に回答するだけなら、ピボットテーブルでcodeの上にカーソルを置いて「A↓Z」の昇順のアイコンをクリックする操作を加えればよいと思います。 しかし、例示されたコードをみると、B列の一番下のセルの右のセルを取得するところとピボットテーブルの作成範囲が固定されていますのでデータ数が増減すると問題が発生します。 前者については、マクロの記録で対応するなら、B列の一番下のセルを選択後に相対参照に切り替え、1つ右のセルを選択するか、Selection.Offset(0,1)のように選択した範囲の1つ右のセルを指定するコードにする必要があります。 後者については、簡便に対応するならデータ範囲を大きめに指定してピボットテーブルを作成し、ピボットテーブルに表示される「(空白)」という欄を右クリックして「表示しない」を選択するのが簡単な対応です。 あるいは「挿入」「名前」「定義」で参照範囲に「=OFFSET($A$1,0,0,COUNTA($A:$A),1)」のような数式を入力しておいてピボットテーブルのデータ範囲を自動取得できるようにしておき、この範囲の名前をコード内に使用することもできます。 しかし、最も確実な対応策は、すでに回答したように、いったんピボットテーブルを作成しておき(この場合ピボットテーブルのデータ範囲に上記の名前定義を利用する)、新たに作成したいデータを元データの上にコピー貼り付けして(必要に応じて元データの削除をしてから)、ピボットテーブルの「データの更新」を行うのが簡便でよいと思うのですが・・・

関連するQ&A

  • 未だにピボットテーブルがよくわからない・・・

    Excelはもう10年以上も仕事で使ってきて、VBAでマクロを組んで業務を効率化するという仕事もしてきましたが、未だにピボットテーブルだけは理解できません。 ピボットテーブルの使い方を解説したサイトを読んだりもしましたが、どういうことができるのかはだいたい理解できるものの、ピボットテーブルを挿入したあとどうすれば自分の思う集計ができるのかがわからない。 右側にある「ピボットテーブルのフィールド」で、どういうときに「フィールド」「列」「行」「値」それぞれのところへどんな順番で移動すれば良いのかわからない。 同じフィールド内でも順番が入れ替わるだけでピボットテーブルの見栄えがガラッと変わりますよね。 ピボットテーブルを使えば5分で終わるような集計を、僕は1時間とかかけてVBAを使って力技で集計してるのがバカバカしくて悲しくなります。 「VBA使えるなんてすごい!」なんてよく言ってもらえますが、ExcelでできることをわざわざVBAを書いてやるなんて、まるで車輪の再発明じゃないですか。 ピボットテーブルを使いたいというか、理解したいです。 何か良いサイトか本を教えていただけないでしょうか? 特にフィールドのところを詳しく説明してるような・・・。 よろしくお願いいたします。

  • ピボットテーブルのマクロについて

    ピボットテーブルのマクロについて教えてください。 NO 場所  ランク 面積 1  東京  上    10 2  大阪  上    20 3  福岡  中    20 4  広島  中    30 5  東京  中    15 6  東京  中   25 7  大阪  下   35 8  福岡  下   45 9  大阪  下   10 10 大阪  下   10 という表があり、 場所ごとランクごとの面積集計を ピボットテーブルのマクロを組んで実施したい のですが(同じ作業を繰り返すので)、 マクロを記録して、内容を実行しようとすると、 「実行時エラー」が出てしまいます。 記録したマクロは以下の通りです。 ( → ←のところでエラーが出ます) Sub Macro1()  ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _   "Sheet1!C2:C4").CreatePivotTable TableDestination:="", TableName:= _  "ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10  ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)  ActiveSheet.Cells(3, 1).Select → With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("場所")   ←   .Orientation = xlRowField   .Position = 1  End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("ランク")    .Orientation = xlRowField    .Position = 2  End With  ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _    "ピボットテーブル2").PivotFields("面積"), "データの個数 / 面積", xlCount  Range("A3").Select  ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("データの個数 / 面積 ").Function = _  xlSum End Sub ピボットテーブルのフィールドリストがうまく挙がってこないようなのですが、 どのようにマクロを組み直せば、よいのでしょうか? 作りたい集計表は、以下のようなものです。 場所 ランク  合計 広島  中   30  集計     30 大阪  下   55     上    20  集計     75 東京  上   10     中    40  集計     50 福岡  下   45     中    20  集計     65 総計      220 長々とまた見づらくてすみません。 よろしくお願いします。

  • マクロでピボットテーブルを行う方法

    マクロ初心者です。よろしくお願い致します。 マクロでピボットテーブルにて集計を行いたいと思っています。 コマンドボタン1発で以下の全ての動作を行いたいです。 ■動作詳細■ [OK]コマンドボタンで指定したファイルを開く。 [OK]集計しやすいようにファイル内のデータを加工。 [NG]指定して開いたファイル上でピボットテーブル集計ができない。 ■NG要因として■ 指定して開いたファイルのSheet1上のデータをピボットテーブル新規作成でSheet2に作成するので、集計する元のデータの場所(Sheet1)をマクロ上に記載する必要があると思うのですが、うまくいきませんでした。 どなたかお分かりになる方がいらっしゃいましたらご助言いただければと思います。よろしくお願いします。 ■作成マクロ■ ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "test01!C1:C8").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("コード") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("色") .Orientation = xlColumnField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("売上"), "データの個数 / 売上数量", xlCount 一度、作成したピボットテーブルのデータをマクロにコピーしてコマンドボタンにペーストしました。 それによって参照してあるセルの位置もズレてしまったのでしょうか? どこを直せばよいのか分からなくなってしまいました。 よろしくお願いいたします。

  • Excel ピボットテーブル 外部データ取り込み

    外部データ取り込みによるピボットテーブルにて、値が0となり正しい値が表示されません。 Book1にデータを蓄積しています。 Book2でBook1のデータを取り込んでピボットテーブルを作成したところ、あるフィールドの集計値だけが0となってしまいます。 問題はBook2でデータを取り込んだ際に、そのフィールドだけが文字列扱いになってしまっているようです。(ピボットテーブルのセルの詳細表示にて、文字列となっていることを確認) Book1にてピボットテーブルを作成した場合、そのフィールドは数値として認識しています。 どのように対処すれば、数値として認識してくれるのでしょうか? 動作環境 Win7 Excel 2010

  • ピボットテーブルのマクロについて

    会社で各営業支店のデータを集計する際、ピボットテーブルを使っています。毎回同じ作業なのでマクロの記録をしてみたのですが上手くできずに困っています。 各列に支店名、日付、商品名、数量のデータがあります。それを表に左に商品名、上に日付、右下に数量、一番上の欄に支店名が来るようにするにはどのように書けばよい教えて頂けませんでしょうか。 よろしくお願いします。

  • ピボットテーブルの手順

    お願いします。Accessでフォームを作り、 入力していこうとしています。入力フォームは出来ています。 これに、データを入れていってデータベースを作っていこうと思いますが、 データベース(数値)を作った後で、 Excellにエクスポートせずに、 ExcellのΣのような集計をしたいのですが、 ヘルプを見ましたが、よく分からないです。 ピボットテーブルで 数値データの集計を行うデータフィールドだとかが あったんですが、やはり、ピボットテーブルから行うのでしょうか? ピボットテーブルをやろうとしましたが、上手く行きません。 参考本も買おうかなとは思いますが、 その前にと思い質問しています。 どうのような手順で行ったらいいのでしょう。 参考サイトなどがあれば、お願いしたいと思います。 ピボットテーブルでQ&Aを検索しましたが、 私の質問は、初歩的過ぎて、参考になるのはありませんでした。

  • ピボットテーブルをいくつも作らなくてよい方法は…?

    セミナーの来客者に関する集計データを作成しようとしています。 元となるデータには、A列に性別(男性or女性)、B列に年齢(年齢が入力されていないデータは「未記入」)を表す数値があります。C列以降には各列ごとに異なるセミナー名が項目名として書かれていて(約50列)、それらの列に値がついている場合は「出席」「契約済」「登録済」のいずれかで、値のないセルは空白になっています。 これらの各列のセミナーごとに、「出席」+「契約済」の合計値、および「登録済」も含めた3つの値のデータの合計を、性別、年齢別(年代ではなく、「20~25」「26~30」といった年齢の分類で)に集計したいと考えています。 思いついた方法は、各セミナーごとにピボットテーブルをかけていく方法ですが(セミナーごとの集計のほか、集計対象の全セミナーの合計値も出すため)、セミナーの数が多く、ピボットテーブルを大量に作らなければならないという難点があります。毎月のように発生する作業なので、もっと効率のよい方法はあるでしょうか。ちなみに、関数などは使えますが、マクロは知識がなく使っていません。 状況があまりうまく伝えられていないかもしれませんが、不明点があれば補足します。皆さんのよきアドバイスをお待ちしています。m(__)m

  • ピボットテーブル

    ピボットテーブル エクセル2007を利用しています。 同一シート内に表とピボットテーブルがあります。 月ごとにシートを変更してデータをまとめています。(1月のシートがあり、2月のシートがあり、その都度集計している、というような形です。) 1月のシートと同じ形式で集計したいと思い、シートをコピーして別シートに貼付しました。1月の数値を表から削除してもピボットテーブル内の数値は1月のままです。 2月分の数値を表に入力して、ピボットテーブルに反映させるにはどうしたら良いでしょうか。 説明下手で申し訳ありませんが、ご存知の方がいらっしゃいましたら、ご教示下さい。

  • ピボットテーブルは重なり合うことはできませんエラー

    ピボットテーブルを更新すると 『ピボットテーブル レポートは ほかのピボットテーブル レポートと 重なり合うことはできません』エラーが出ます。 集計結果が15行×20列ほどのピボットテーブルで 下方向、右方向に他のピボットテーブルはありません。 思い当たるのは集計前データ件数(5万件超)ですが、何か関係するでしょうか。 ExcelはOffice365(バージョン1902)です。

  • ピボットテーブルで教えてください

    ピボットテーブルでレイアウトは出来たのですが、書式をkg表示→t表示に変えなければならない列がありました。その場合ダイレクトに計算式を入れることはどうすれば可能ですか? 集計行毎に色を付けるのと、どうも月→四半期のグループ化も上手く出来ず悩んでます。 ピボットはどうやって勉強すればいいのでしょうか?参考書もいまいちで。ちなみにエクセル2003です。 よろしくお願い致します。