-2

我有一张这种格式的表格:

如何制作一个=SUMIF(K419:K421;">0")在 K 列的每个灰色单元格中创建 SUMIF 函数(如)的宏?

它应该总结它正上方的白色单元格,直到它到达上面的下一个灰色单元格。每个灰色单元格上方的白色单元格数量不一致。

这是 K 列的示例:白色、白色、灰色、白色、白色、白色、白色、灰色、白色、灰色。

关于 sumif 的范围:我知道 R[-1] 直接引用每个灰色单元格上方的单元格,但是我应该如何在上面的灰色单元格之后直接引用单元格?

谢谢!

4

1 回答 1

1

最好的方法是考虑如何手动执行此操作。IE

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 回答