2016-08-16 5 views
0

Мне нужны значения SUM из ячеек B5: B10, если цвет фона C5: C10 красный.Excel - SUMIF следующий цвет ячейки

Итак, скажем, C5 и C8 являются красными, мне нужен SUM из ячеек B5 + B8.

Эти модули, которые я использовал: http://www.exceltrick.com/how_to/sum-cells-based-on-background-color/

Это не работает: = SUMIF (C5: C10; "=" & GetCellColor (С5: С10) = "=" & GetCellColor (A1) ; B5: B10)

Заранее благодарен!

EDIT:

GetCellColor

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 
+1

Можете ли вы разместить свой UDF? – Brian

+0

Согласен. Пожалуйста, * отредактируйте * ваш вопрос, ** добавьте GetCellColor() **. –

ответ

0

Это будет работать, если у вас есть цвета в любом смежном вертикальном диапазоне со значениями в предыдущей колонке, и вы ищете только красный цвет:

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) в ячейке, как и любая другая формула.

+0

Спасибо, Брайан! – kivi

Смежные вопросы