-2

私はこの形式のシートを持っています:

=SUMIF(K419:K421;">0")列 K のすべての灰色のセルにSUMIF 関数 ( など) を作成するマクロを作成するにはどうすればよいですか?

上の次の灰色のセルに到達するまで、そのすぐ上の白いセルを合計する必要があります。各灰色のセルの上の白いセルの数は一貫していません。

これは列 K の例です: 白、白、灰色、白、白、白、白、灰色、白、灰色。

sumif の範囲について: R[-1] が各グレー セルのすぐ上のセルを参照していることはわかっていますが、上記のグレー セルの直後のセルを参照するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

これを行う最善の方法は、これを手動で行う方法を考えることです。すなわち

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 を確認することでこれを行うことができますが、何らかの理由で誰かが (例として) グレーまたはピンクのわずかに異なる色合いを使用することを決定した場合、正しく機能しません。代わりに空白の値を見る方が安全かもしれません。

于 2013-08-12T15:02:44.903 に答える