• ベストアンサー

エクセルデータをVBAを使って集計する方法

エクセルのデータを次のように集計したいのですが、良い方法を教えて下さい。VBAに組み込みたいのですが。 元のデータは次のような項目に分かれています。 (納入日)(契約番号)(取引先)(商品名)(数量)(金額)  納入日毎に1件づつ入力されているのですが、これを、取引先別、商品別に数量と金額を集計したいのです。 集計項目が2項目あるため、ピボットテーブルで集計すると、1件が2行になってしまい、後の加工がしづらいのです。 今のところ、ピボットテーブルで数量と金額を別々に集計して、後でVLOOKUP等の関数を使って表を1つする事を考えているのですが、もっと良い方法をご存知ないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • 134
  • ベストアンサー率27% (162/600)
回答No.1

 VBAではないのですけど、sumif文や配列関数を使う方法もあります。 =sumif(データ範囲,検索条件,合計範囲) という形式がsumif文になります。 また、配列関数は、 =sum(if(データ範囲=検索条件,合計範囲,"")) と入力して、shiftとctrlを押しながら、Enterを押すということで、入力します。(この際、関数の両端が{}となります) 金額欄を合計していいものやら、とか、セル構成が分かりませんので、アドバイスにとどめたいと思います。

mountain_
質問者

お礼

早速やってみたら上手く行きました。 VBAに取り込めればそれで良かったので十分です。 こんな簡単な関数で解決できるとは、とても助かりました。 ありがとうございました。

その他の回答 (3)

noname#29107
noname#29107
回答No.4

単純にピボットテーブルで集計項目を横に並べれば良いのではないですか? 多分集計項目の列にデータというボタンが出来ていると思うので、それを集計と書かれたセルの辺りにドラッグすれば、ご希望の形になりませんか?

mountain_
質問者

お礼

まさにその通りでした。そんな事が出来るとは知りませんでした。 でも、やはりピボットテーブルは後の加工がしづらいので、私の考えているようにはなりませんでした。 回答ありがとうございました。

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

VBAでやると言うことは、即時算出型でなく、一定時要求者起動計算型(オフラインバッチ処理)になりますが良いですか。それを認識してますか。 関数(関数はデータの変化を見張っていて、再計算します)と違う点です。 取引先別、商品別に集計したい時は、それぞれ取引先別、商品別に作業シート上でデータをソートし、ソート後の行を1つずつ上から順次読んでコントロールブレーク(初級的なロジック)を見張って(取引先名が変わらないか聞いて)集計すれば良いです。

mountain_
質問者

お礼

日次でバッチ処理を行いたかったので大丈夫です。 私は専門家でもなければ系統立てて勉強した事もないのでImogashiさんのお使いになっている言葉が今一つ理解できなくて申し訳ないのですが、多分仰られているような方法で作成できました。 回答ありがとうございました。

  • 134
  • ベストアンサー率27% (162/600)
回答No.2

配列関数について、過去の質問で、わかりやすく解説しているHPが検索できましたので、ついでに添付します。

参考URL:
http://pc21.nikkeibp.co.jp/special/hr/
mountain_
質問者

お礼

わざわざ追記をありがとうございます。 勉強になりました。

関連するQ&A