アプリ版:「スタンプのみでお礼する」機能のリリースについて

あるエクセルシートを自動処理する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
ご存知の方、どうぞ教えてください。

A 回答 (2件)

参考例として。



Excel(エクセル) VBA入門:Dictionaryオブジェクトを利用する
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
【重複しないリストを生成する】
-【2つの条件で合計する】

の様な方法もあります。
    • good
    • 1

こんにちは。



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

では。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています