• ベストアンサー

VBA 得意先ごと且つ日付ごとに数値を集計したい

あるエクセルシートを自動処理するVBAを作成しようとしています。 シートの内容は A日付列 B得意先コード列 C金額列 20091001 000001 \1,000 20091001 000001 \1,500 20091002 000002 \800 20091002 000001 \1,200 といった感じです。 これを、指定した日付で、且つ得意先コード毎に集計したいと考えています。(上記の例だと、コード000001得意先は20091001で\2,500、20091002で\1,200といった具合です) 現在、日付毎で集計するところまでは作成できたのですが、ここから得意先別で集計するにはどのようにコーディングすればよいでしょうか。 日付毎の集計は以下のようにしています。 cnt = 2 Total = 0 Do Until False '行が底に達したらループを終了します If Range("D" & cnt).Value = "" Then Exit Do End If     'D列の日付と指定の日付が合致したら If yearmonthday = Range("D" & cnt).Value Then 'L列の金額を取得しカウント Total = Total + CDbl(Range("T" & cnt)) '次の行を検索するための行数カウント cnt = cnt + 1 Else cnt = cnt + 1 End If Loop ご存知の方、どうぞ教えてください。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

参考例として。 Excel(エクセル) VBA入門:Dictionaryオブジェクトを利用する http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_dictionary.html 【重複しないリストを生成する】 -【2つの条件で合計する】 の様な方法もあります。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  今のプログラムでは、「Total」という1つの変数しかないので、「指定した日付で、且つ得意先コード毎に集計」した値を格納できません。得意先分の配列を定義してそこに格納しなければならないのですが、得意先が100だからといって、Total(100)という1次元配列にしてしまうと、今度は何番目の配列にどの会社のデータを格納したかわからなくなってしまいます。(得意先コードが連番であればそれでもかまいませんが。)Total(2,100)と2次元配列にし、Total(1,x)に得意先コード、Total(2,x)に合計金額を格納すればよいと思います。 では。

すると、全ての回答が全文表示されます。

関連するQ&A