こんばんは!
すでに回答は出ていますので、参考程度で・・・
一例です。↓の画像のようにD列を作業用の列としています。
作業列D2セルに
=IF(B2="","",IF(A2="",D1,A2))
という数式を入れ、オートフィルでずぃ~~~!っと下へコピーしておきます。
E2セルに
=IF(COUNTA($A$2:$A$1000)<ROW(A1),"",INDEX($A$2:$A$1000,SMALL(IF($A$2:$A$1000<>"",ROW($A$1:$A$999)),ROW(A1))))
これは配列数式になってしまいますので、Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。
F2セルに
=IF(E2="","",SUMIF(D:D,E2,C:C))
(これは配列数式ではありません)
として、E2・F2セルを範囲指定しF2セルのフィルハンドルで下へコピーすると画像のような感じになります。
尚、余計なお世話かもしれませんがVBAでの方法として・・・
画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub test() 'この行から
Dim i, j, k As Long
Dim vl As Variant
k = Cells(Rows.Count, 5).End(xlUp).Row
If k > 1 Then
Range(Cells(2, 5), Cells(k, 6)).Delete (xlUp)
End If
Columns(1).Insert
For i = 2 To Cells(Rows.Count, 3).End(xlUp).Row
If Cells(i, 2) <> "" Then
Cells(i, 1) = Cells(i, 2)
Cells(Rows.Count, 6).End(xlUp).Offset(1) = Cells(i, 2)
Else
Cells(i, 1) = Cells(i - 1, 1)
End If
Next i
For j = 2 To Cells(Rows.Count, 6).End(xlUp).Row
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = Cells(j, 6) Then
vl = vl + Cells(i, 4)
End If
Next i
Cells(j, 7) = vl
vl = 0
Next j
Columns(1).Delete
End Sub 'この行まで
長々と失礼しました。m(__)m
お礼
シンプルでわかりやすかったです。ありがとうございます。