Excel - SUMIF 下一个单元格颜色是
Excel - SUMIF next cell color is
如果 C5:C10 背景颜色为红色,我需要对单元格 B5:B10 中的值求和。
假设 C5 和 C8 是红色,我需要单元格 B5+B8 的 SUM。
这些是我用过的模块:http://www.exceltrick.com/how_to/sum-cells-based-on-background-color/
这不起作用:=SUMIF(C5:C10;"="&GetCellColor(C5:C10)="="&GetCellColor(A1);B5:B10)
提前致谢!
编辑:
获取单元格颜色
Function GetCellColor(xlRange As Range)
Dim indRow, indColumn As Long
Dim arResults()
Application.Volatile
If xlRange Is Nothing Then
Set xlRange = Application.ThisCell
End If
If xlRange.Count > 1 Then
ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count)
For indRow = 1 To xlRange.Rows.Count
For indColumn = 1 To xlRange.Columns.Count
arResults(indRow, indColumn) = xlRange(indRow, indColumn).Interior.Color
Next
Next
GetCellColor = arResults
Else
GetCellColor = xlRange.Interior.Color
End If
End Function
如果您的颜色在任何连续的垂直范围内且具有前一列中的值,并且您只是在寻找红色,这将起作用:
Function CountAdjacent(colorRange As Range) As Long
Dim clr As Variant
Dim countValue As Long
For Each clr In colorRange
If clr.Interior.color = vbRed Then
countValue = Application.WorksheetFunction.Sum(clr.Offset(0, -1).Value, countValue)
End If
Next clr
CountAdjacent = countValue
End Function
像任何其他公式一样在单元格中键入 =CountAdjacent(yourColorRange)
。
如果 C5:C10 背景颜色为红色,我需要对单元格 B5:B10 中的值求和。
假设 C5 和 C8 是红色,我需要单元格 B5+B8 的 SUM。
这些是我用过的模块:http://www.exceltrick.com/how_to/sum-cells-based-on-background-color/
这不起作用:=SUMIF(C5:C10;"="&GetCellColor(C5:C10)="="&GetCellColor(A1);B5:B10)
提前致谢!
编辑:
获取单元格颜色
Function GetCellColor(xlRange As Range)
Dim indRow, indColumn As Long
Dim arResults()
Application.Volatile
If xlRange Is Nothing Then
Set xlRange = Application.ThisCell
End If
If xlRange.Count > 1 Then
ReDim arResults(1 To xlRange.Rows.Count, 1 To xlRange.Columns.Count)
For indRow = 1 To xlRange.Rows.Count
For indColumn = 1 To xlRange.Columns.Count
arResults(indRow, indColumn) = xlRange(indRow, indColumn).Interior.Color
Next
Next
GetCellColor = arResults
Else
GetCellColor = xlRange.Interior.Color
End If
End Function
如果您的颜色在任何连续的垂直范围内且具有前一列中的值,并且您只是在寻找红色,这将起作用:
Function CountAdjacent(colorRange As Range) As Long
Dim clr As Variant
Dim countValue As Long
For Each clr In colorRange
If clr.Interior.color = vbRed Then
countValue = Application.WorksheetFunction.Sum(clr.Offset(0, -1).Value, countValue)
End If
Next clr
CountAdjacent = countValue
End Function
像任何其他公式一样在单元格中键入 =CountAdjacent(yourColorRange)
。