[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでデータの集計をしたい』(しろたん)
いつもお世話になっております。
お忙しい中大変恐縮ですが、ご教示ください。
商品の項目のデータがあり、商品ごとの項目の集計するマクロを作成したいと考えております。
項目にはナンバーが振ってあり、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 >
'シート「データ」からシート「結果」に表示。「データ」の一行目は見出し 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.