[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『品番を製品厚み毎にまとめたい』(天使)
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.