[[20090507073921]] 『品番を製品厚み毎にまとめたい』(天使) ページの最後に飛ぶ

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

 

『品番を製品厚み毎にまとめたい』(天使)

      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.