[[20180601111420]] 『マクロでデータの集計をしたい』(しろたん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロでデータの集計をしたい』(しろたん)

いつもお世話になっております。
お忙しい中大変恐縮ですが、ご教示ください。

商品の項目のデータがあり、商品ごとの項目の集計するマクロを作成したいと考えております。
項目にはナンバーが振ってあり、1つ目のナンバー2から2つ目のナンバー2までのA,Bなどの各項目の集計、2つ目のナンバー2から3つ目のナンバー2までを集計・・・という計算をします。
そして、結果は商品ごとに横に並べて表示したいです。

類似の質問を見つけてなんとか改良してみたのですが、スキル不足で上手く出来ずに困っております。
http://www.excel.studio-kazu.jp/kw/20180413111544.html

何卒よろしくお願い申し上げます。

◇データ
ナンバー 項目 数値
2 商品1
1 A 100
1 B 200
1 D 300
1 C 100
1 B 200
1 C 400
1 B 200
1 B 200
1 C 100
2 商品2
1 A 100
1 B 200
1 B 200
1 C 100
1 C 100
1 C 300
1 D 400
1 B 200
2 商品3
1 A 200
1 C 300

◇結果
商品1 A 100 B 800 D 300 C 600
商品2 A 100 B 600 C 500 D 400
商品3 A. 200 C 200

< 使用 Excel:Excel2010、使用 OS:Windows7 >


Sub main()
    'シート「データ」からシート「結果」に表示。「データ」の一行目は見出し
    Dim c As Range, r As Range, rr As Range
    Sheets("結果").Cells.ClearContents
    Set r = Sheets("結果").Range("A1")
    For Each c In Sheets("データ").Range("A2:A" & Rows.Count).SpecialCells(2)
        If c.Value = 2 Then
            Set r = r.Offset(1)
            r.Value = c.Offset(, 1).Value
        ElseIf c.Value = 1 Then
            Set rr = r.EntireRow.Find(c.Offset(, 1).Value, , , xlWhole)
            If rr Is Nothing Then
                Sheets("結果").Cells(r.Row, Columns.Count).End(xlToLeft).Offset(, 1).Resize(, 2).Value = c.Offset(, 1).Resize(, 2).Value
            Else
                rr.Offset(, 1).Value = Val(rr.Offset(, 1).Value) + Val(c.Offset(, 2).Value)
            End If
        End If
    Next c
End Sub
(mm) 2018/06/01(金) 13:29

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.