これを行う最善の方法は、これを手動で行う方法を考えることです。すなわち
1) 列 K の上部から開始します。
2) 列 K を空白になるまで下に移動します
3) 最後の灰色のセル + 1 から現在の灰色のセル - 1 の範囲を使用して、SUMIF ステートメントを入力します。
4) データの末尾までループ
そう...
Private Sub loopSumIF()
Dim currentRow As Integer
Dim lastGreyRow As Integer
Dim endLoop as Boolean
currentRow = 2
lastGreyRow = 2
endLoop = False
Do Until endLoop = True
if ActiveSheet.Range("K" & currentrow) = "" then
ActiveSheet.Range("K" & currentRow) = "=SUMIF(K" & lastGreyRow & ":K" & currentorw - 1 & "," & Chr(34) & ">0" & Chr(34) & ")" 'set formula
lastGreyRow = currentRow + 1 'set the top of the next sumif to the next cell down
End If
currentRow = currentRow + 1 'move currentrow down
If ActiveSheet.Range("K" & currentRow) = "" Then endLoop = True 'two blank cells in a row indicates end of data
Loop
End Sub
注: 代わりにセルの colorIndex を確認することでこれを行うことができますが、何らかの理由で誰かが (例として) グレーまたはピンクのわずかに異なる色合いを使用することを決定した場合、正しく機能しません。代わりに空白の値を見る方が安全かもしれません。