我有一张这种格式的表格:
如何在K列的每个灰色单元格中创建一个创建SUMIF函数的宏(如=SUMIF(K419:K421;">0")
)?
它应该直接在它上面的白色细胞总结,直到它到达上面的下一个灰色细胞。每个灰色单元格上方的白色单元格数不一致。
这是K列的一个例子:白色,白色,灰色,白色,白色,白色,白色,灰色,白色,灰色。
关于sumif的范围: 我知道R [-1]直接引用每个灰色单元格上方的单元格,但是我应该如何在上面的灰色单元格之后直接引用单元格呢?
谢谢!
答案 0 :(得分:1)
最好的方法是考虑如何手动执行此操作。即。
1)从K列顶部开始。
2)向下移动列K直到空白
3)使用最后一个灰色单元格+ 1到当前灰色单元格的范围输入SUMIF语句 - 1
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来完成此操作,但如果由于某种原因某人决定使用稍微不同的灰色阴影或粉红色(作为示例),那么它将无法正常工作。您可能会更安全地查看空白值。