[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『品番を製品厚み毎にまとめたい』(天使)
A B C D E F G H 1 品番 厚み 重さ 品番 厚み 重さ 2 AA 0.5 13 AA 0.3 29 3 AA 0.3 13 AA 0.5 13 4 BA 0.3 14 BA 0.2 11 5 HB 0.6 16 BA 0.3 14 6 HB 0.6 14 DD 0.2 14 7 DD 0.2 14 HB 0.6 30 8 AA 0.3 16 9 BA 0.2 11 10 11 12 *ABCのデータをFGHにまとめたい。関数による計算式を教えて下さい!
F2=IF(COUNT(INDEX(0/((MATCH($A$2:$A$100&"_"&$B$2:$B$100,$A$2:$A$100&"_"&$B$2:$B$100,0)=ROW($A$1:$A$99))),))<ROW($A1),"", INDEX(A$2:A$100,SMALL(INDEX((MATCH($A$2:$A$100&"_"&$B$2:$B$100,$A$2:$A$100&"_"&$B$2:$B$100,0)<>ROW($A$1:$A$99))*9^99+ ROW($A$1:$A$99),),ROW($A1)))&"") G列にフィルコピー、必要分フィルダウン。
H2=IF(F2="","",SUMPRODUCT((A$2:A$100=F2)*(B$2:B$100=--G2),C$2:C$100)) 必要分フィルダウン。
関数で並び替えまではできませんでした。。。orz
(ROUGE)
マクロならばこんな感じでできます。(ROUGE) Sub Angel() Dim tbl, i As Long, ky With CreateObject("Scripting.Dictionary") tbl = Range("A1").CurrentRegion.Resize(, 3).Value For i = 2 To UBound(tbl, 1) ky = tbl(i, 1) & "_" & tbl(i, 2) If .Exists(ky) Then .Item(ky) = .Item(ky) + tbl(i, 3) Else .Add ky, tbl(i, 3) End If Next Range("F:H").ClearContents Range("F1:H1").Value = Range("A1:C1").Value i = 1 For Each ky In .Keys i = i + 1 Range("F" & i).Value = Split(ky, "_")(0) Range("G" & i).Value = Val(Split(ky, "_")(1)) Range("H" & i).Value = .Item(ky) Next Range("F1", Range("H" & Rows.Count).End(xlUp)).Sort _ Key1:=Range("F1"), _ Order1:=xlAscending, _ Key2:=Range("G1"), _ order2:=xlAscending, _ Header:=xlYes End With Erase tbl End Sub
このような集計はピボットテーブルを使うのが楽だと思いますが、 関数が良いのでしょうか? (Hatch)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.