• 締切済み

VBA エクセル ピボットテーブル

end-uの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

例えば、 『表がシートごとになっていて、必ずA1セルを起点とする』 『対象となる表の数はユーザーがシートを選択する事によって決定する』 というルールの元、ご提示のレイアウト通りに処理しようとすると、一例ですが Sub try()   Dim ws As Worksheet   Dim dic As Object   Dim r  As Range   Dim s  As String   Dim i  As Long   Dim j  As Long   Dim ix As Long   Dim x  As Long   Dim v  As Variant   Dim w(1 To 65535, 1 To 4)   Set dic = CreateObject("scripting.dictionary")   For Each ws In ActiveWindow.SelectedSheets     With ws.Range("A1").CurrentRegion.Resize(, 4)       Set r = Intersect(.Cells, .Offset(1))     End With     If Not r Is Nothing Then       v = r.Value       For i = 1 To UBound(v)         s = v(i, 2) & vbTab & v(i, 4)         If dic.Exists(s) Then           ix = dic(s)           w(ix, 1) = w(ix, 1) + v(i, 1)           w(ix, 3) = w(ix, 3) + v(i, 3)         Else           x = x + 1           dic(s) = x           ix = x           For j = 1 To 4             w(ix, j) = v(i, j)           Next         End If       Next       Set r = Nothing     End If   Next   ActiveSheet.Select   If x > 0 Then     With Sheets.Add       .Range("A1:D1").Value = Array("field1", "field2", "field3", "field4")       .Range("A2:D2").Resize(x).Value = w     End With   End If   Set dic = Nothing End Sub こんな感じで処理できます。 ですが"scripting.dictionary"という外部オブジェクトを使いますし、 配列に対して理解しておく事も必要になります。 コード内容が理解できなければメンテナンスも難しいのでハードルは高いです。 でも『いくつかの表をまずコピーしてまとめてしまえば』ピボットテーブルが使えます。 (画像) そのコピーでまとめる作業と、ピボットテーブルを作る作業をマクロにしてしまえば良いです。 完成形を妥協すればここまででもいいですし、 必要であればピボットテーブルを[コピー]-[値貼り付け]する事でピボットを解除し、 列を組みかえれば良いです。

lyu05665
質問者

お礼

end-u様、ありがとうございます。 >コード内容が理解できなければメンテナンスも難しいのでハードルは高いです。 そうですね、難しそうです。とりあえず、全部の表を一つの表にコピーして、そこからフィルターで整理し選び出すようなプロシージャを考えてみます。

関連するQ&A

  • エクセルのピボットテーブルについて

    お世話になります。 エクセル2010のピボットテーブルの使い方について 教えてください。 ピボットテーブルである項目Aの合計と別の項目Bの合計を 求めてその合計の割り算(Aの合計/Bの合計)を表示させたいのですが Aの合計・Bの合計は求められますがその商の表示のさせ方がわかりません 初歩的な質問かもしれませんが 教えていただけないでしょうか よろしくお願いします。

  • ピボットテーブルについて

    以前誰かが作ったピボットテーブルを見て、同じようなものを作りたいと思って挑戦しているのですが、どうしてもうまくいかないので、教えていただきたいのです。 ずらずらと項目と数字がならんでいる表があり、売上予定と粗利予定の合計、その二つの数字から粗利率を出して表示させるというものです。 表の中には「粗利率」という項目はありませんが、以前作られたピボットには、「粗利率」が表示されています。計算もあっています。 新規で作ろうとすると、「粗利率」の項目が無いため、表示されません。 項目が無いのに表示され、しかもきちんと計算されている。 できれば同じように作りたいのですが、どうすればいいでしょうか?

  • エクセルピボットテーブルのフィールドアイテムについて

    はじめまして。質問させていただきます。 売上報告表を集計するためにピボットテーブルを使っています。(エクセル2003) 必要項目はフィールドのプルダウンにチェックを入れることで選択していますが、元データ側に今まで集計したことのない項目が増えるたびにピボットテーブル側でも表示されてしまいます。(取引先フィールドに新規取引会社が増えていく) 表示する項目は固定ですので、現在は増えてしまった項目のチェックを手作業ではずして対応していますが、この作業を行うピボットテーブルが20個近くあるので正直煩雑でたまりません。 (ピボットテーブルは全て一つのブック内にあります。シートは2枚です。参照データ範囲は同一です。) この状態でも選択した項目のみ固定で表示できる設定、もしくはマクロ等ありましたら教えて下さい。 よろしくお願いします。

  • EXCELのピボットテーブルで質問があります

    EXCELのピボットテーブルで質問があります 実際には品物は「りんご」ではないし「原価率」の話でもないのですが・・・ 日付 品物 個数 定価 原価率 2月1日 りんご 1 100 0.9 2月2日 りんご 1 100 0.9 上の表からピボットテーブルを作り「定価」*「原価率」の数式を入れると 原価率も合計されてしまうので欲しい答えではなくなってしまいます がピボットテーブルだと表の外からの参照が出来ないようです ピボットテーブルで定価の合計に対し「0.9」をかける方法はありませんか? EXCELは2002、2003、2007を使っています よろしくお願いします

  • ピボットテーブルを使用して出納表を作りたい。

    vistaでoffice2007を使用しています。 エクセル2007で出納表を作成しているのですが・・・ 合計・集計の際にSUMIFを使用しています。 でも当方としてはピボットテーブルを使用して項目ごとに集計を出したほうが 楽なのでは?と思い、ピボットテーブルで出た合計(集計結果)をコピペしたりするのですが・・ よく考えると月ごとに項目は変わりまして・・・ 1月には?という項目があっても2月には?がない場合があります。 その場合ピボットテーブルの項目まで変えないとダメなので、手間がかかるようにも思います。 出納表でピボットテーブルをウマく活用して集計結果を簡単に作ることはできないのでしょうか? 項目ごとに合計出したり・・・ また、月ごとに項目を変えて合計を出したりがしたいのですが・・・。 GETPIVOTDATAでの活用方法も出来ればご一緒に 教えていただけますでしょうか・・・!? 説明がまとまっていなくて申し訳ありません・・・。 ※複雑な関数やマクロなどは使用しません。

  • 【Excel2003】テーブルからピボットテーブル

    【Excel2003】で、リスト形式の表ではなく、テーブル形式の表からピボットテーブルの枠を作成するにはどうすればいいのでしょうか? Excel2007や2010バージョンでは、すぐにできるのですが。。

  • ピボットテーブルについて

    基本的なことかもしれませが、教えて下さい。 ピボットテーブルで縦が支店別、横が種類別の売上合計を作成しました。ところが、キャンセルになったものも含まれてしまっていて売上があいません。キャンセル又は成約データは元の表「ステータス」という項目です。この「ステータス」から成約だけを抜き出して合計を求めたいのですが、、、。よろしくお願い致します。

  • ピボットテーブルについて

    こんにちは、困っているので教えてください。 名前 データ           商品1   商品2    商品3   商品4    商品5    商品6    総計 合計 / 売上       100000  10000    10000   10000    10000   10000      150000 合計 / 使用量      800     100     100     100     100     100      1300 合計 / 原価       80000   8000    8000    8000    8000    8000      120000 平均 / 興研利益    25      20      20     20      20      20       20.83333333 上記のような表をピボットテーブルにて作成しております。最後の総計箇所ですが現在【20.83333333】になっております。これは【25+20+20+20+20+20/6=20.83333333】となっております。 ですがこちらが求めたい総計は、【(150000-120000)/1300=23.0769】のようにしたいのですが、ピボットテーブル内で関数組む事が出来ませんので困っています。 そもそもピボットテーブルは上記のような計算方法以外には存在しないのでしょうか? どなたか良い案をお持ちの方がいらっしゃいましたらご教授願います。 ※ピボットテーブルに拘らなくてもOKです。

  • エクセルのピボットテーブルを使った集計

    ピボットテーブルで項目ごとの合計を出して、その項目の全体に対する比率を出したいと思っています。 最終的には、項目の合計を棒グラフ、比率を折れ線グラフにしたいのですが、一度の作業でできるのでしょうか? 教えてください。

  • VBAでピボットテーブルは作れるものでしょうか

    2つ連続して質問してしまい申し訳ありません。 以下のようなExcelデータがあります。 このデータを用いて、ピボットテーブルを作りたいと考えています。 縦項目に変数A(氏名)、横項目に変数B(科目) クロス表に示される値を変数C(得点) としたいと考えています。 変数Dは過去の試験結果で今回は用いません。 手操作でのピボットテーブルは自分で作成できるのですが、今後のために 自動的に処理させる一環として、VBAのプログラムでピボットテーブルを 作成したいと考えています。 そのようなことは可能でしょうか? もし可能でしたらどのようなコードになるのでしょうか。 お手数ですが、教えていただけると幸いです。 よろしくお願いいたします。 A    B C  D Xさん 国 60 65 Xさん 社 90 85 Xさん 数 70 55 Xさん 理 80 75 Xさん 英 65 70 Yさん 国 85 85 Yさん 社 95 90 Yさん 数 95 100 Yさん 理 90 90 Yさん 英 85 90 Zさん 国 55 60 Zさん 社 40 35 Zさん 数 40 50 Zさん 理 60 65 Zさん 英 35 30