Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1177 / 13645 ツリー ←次へ | 前へ→

【75831】こんな集計できますか? 初心者(につまりました) 14/7/11(金) 17:54 質問[未読]
【75833】Re:こんな集計できますか? γ 14/7/11(金) 20:47 回答[未読]
【75834】Re:こんな集計できますか? γ 14/7/11(金) 20:49 発言[未読]
【75850】Re:こんな集計できますか? 初心者(につまりました) 14/7/14(月) 10:22 お礼[未読]
【75835】Re:こんな集計できますか? 国語適正化委員会 14/7/11(金) 20:50 発言[未読]
【75836】Re:こんな集計できますか? γ 14/7/11(金) 20:56 発言[未読]

【75831】こんな集計できますか?
質問  初心者(につまりました)  - 14/7/11(金) 17:54 -

引用なし
パスワード
   煮詰まって全く対応できません。

VBAでこのようなことが可能なのか教えてください。
可能であればそのVBAの式を記載御願いしたいのですが・・・

集計前シートに数量、商品、伝票NOの一覧表があります。
商品上1桁がCの商品のみ重複します。
この場合、伝票NOと商品Cが同じ場合は、その伝票NOの
最後行に商品Cを累計したもの表示して、累計前のものを
削除したいのですが・・・

印刷の順番は、商品A 商品B 商品Cの順で印刷を行いた


うまく説明できないので表を書いてみます。

1.は行数を表示
集計前)
1. 数量 商品  伝票 
2. 12    A1     KH6050
3. 12    B1     KH6050
4. 12    C1     KH6050
5. 3    A2     KH6050
6. 3    B2     KH6050
7. 3    C1     KH6050
8. 2    A3     KK6051
9. 2    B3     KK6051
10. 2    C1     KK6051
11. 2    A4     KK6051
12. 2    B4     KK6051
13. 2    C1     KK6051
14. 2    A5    KK6051
15. 2    B5    KK6051
16. 2    C1    KK6051
17. 2    A6    KK6051
18. 2    B6    KK6051
19. 2    C2    KK6051

1. 数量 商品  伝票 
2. 12    A1     KH6050
3. 12    B1     KH6050
4. 3    A2     KH6050
5. 3    B2     KH6050
6. 15    C1     KH6050
7. 2    A3     KK6051
8. 2    B3     KK6051
9. 2    A4     KK6051
10. 2    B4     KK6051
11. 2    A5    KK6051
12. 2    B5    KK6051
13. 2    A6    KK6051
14. 2    B6    KK6051
15. 6    C1    KK6051
16. 2    C2    KK6051

どなたか助けてください。

【75833】Re:こんな集計できますか?
回答  γ  - 14/7/11(金) 20:47 -

引用なし
パスワード
   ○○の一つ覚えで、dictionaryを使います。
書き込み場所とか、適当に修正してください。

Sub test()
  Dim dic As Object
  Dim k As Long
  Dim s As String
  Dim a
  Dim d

  Set dic = CreateObject("Scripting.Dictionary")

  ' 商品&tab&伝票をキーとした辞書に、数量を加算して集計する
  For k = 2 To Range("A1").End(xlDown).Row
    s = Cells(k, 2).Text & vbTab & Cells(k, 3)
    dic(s) = dic(s) + Cells(k, 1).Value
  Next

  '集計結果を5,6,7列に書き込みます。
  k = 1
  For Each d In dic
    k = k + 1
    a = Split(d, vbTab)
    Cells(k, 5).Value = dic(d)
    Cells(k, 6).Value = a(0)
    Cells(k, 7).Value = a(1)
  Next

  'あとはソートするだけ(マクロ記録で頑張ってください)

End Sub

【75834】Re:こんな集計できますか?
発言  γ  - 14/7/11(金) 20:49 -

引用なし
パスワード
   >    s = Cells(k, 2).Text & vbTab & Cells(k, 3)
訂正   s = Cells(k, 2).Text & vbTab & Cells(k, 3).Text
動くことは動きますが。

【75835】Re:こんな集計できますか?
発言  国語適正化委員会  - 14/7/11(金) 20:50 -

引用なし
パスワード
   「煮詰まる」「煮詰まった」の意味と誤用 〜「煮詰まった」は「行き詰まった」ではなかった!
ht tp://www.kotobano.jp/archives/1277

【75836】Re:こんな集計できますか?
発言  γ  - 14/7/11(金) 20:56 -

引用なし
パスワード
   >「煮詰まる」「煮詰まった」の意味と誤用 〜「煮詰まった」は「行き詰まった」ではなかった!
>ht tp://www.kotobano.jp/archives/1277

知らなかった。
国語まで勉強できる掲示板だった・・・・。

【75850】Re:こんな集計できますか?
お礼  初心者(につまりました)  - 14/7/14(月) 10:22 -

引用なし
パスワード
   ▼γ さん:


ありがとうございました。
DICTIONARYではソートが心配でしたが
試してみます。

1177 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free