我有一张这种格式的表格:
如何制作一个=SUMIF(K419:K421;">0")
在 K 列的每个灰色单元格中创建 SUMIF 函数(如)的宏?
它应该总结它正上方的白色单元格,直到它到达上面的下一个灰色单元格。每个灰色单元格上方的白色单元格数量不一致。
这是 K 列的示例:白色、白色、灰色、白色、白色、白色、白色、灰色、白色、灰色。
关于 sumif 的范围:我知道 R[-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 来做到这一点,但如果由于某种原因有人决定使用稍微不同的灰色或粉红色(例如),那么它将无法正常工作。相反,您可能会更安全地查看空白值。