Excel COUNTIF Подсчет слов с опцией ячейки фона
Можно ли использовать функцию CountIf с дополнительными параметрами: подсчитывать ячейки, содержащие определенную строку, только если фон ячейки имеет определенный цвет.
Я использую формулу Excel: `= COUNTIF (page001! B: B;"id-p01"), но блоки данных на каждом листе имеют уникальные строки, каждый блок может иметь два разных цвета фона: ЗЕЛЕНЫЙ или СИНИЙ. Итак, я спрашиваю, могу ли я получить функцию, которая, например, будет содержать ячейки COUNT, содержащие "id-p01" на выбранном листе, но ТОЛЬКО те, которые имеют ЗЕЛЕНЫЙ цвет фона.
Вот пример того, как лист выглядит:
С этой формулой: =COUNTIF(page001!B:B;"*id-p01*")
Он считает id-p01 на выбранном листе в B:B
колонка.
Можно ли сделать так, чтобы считались только ЗЕЛЕНЫЕ фоновые ячейки?
2 ответа
Это быстрое решение выведет на экран количество ячеек в диапазоне от B1 до B1000 (вы можете изменить диапазон, если у вас больше или меньше строк для тестирования), которые имеют именно ваш зеленый цвет.
Обратите внимание, что для этого нужно использовать макрос, это невозможно сделать с помощью простой формулы. Чтобы создать макрос, нажмите ALT + F11, затем щелкните правой кнопкой мыши имя вашей книги и "Вставить модуль". Скопируйте, вставьте код ниже и нажмите F5, пока вы все еще находитесь в окне VBA, или используйте любой другой метод для запуска макроса.
Sub CountWithColor()
For Each c In Range("B1:B1000")
If c.Value Like "*id-p01*" And c.Interior.Color = RGB(226, 239, 218) Then
compteur = compteur + 1
End If
Next c
MsgBox (compteur)
End Sub
Дайте мне знать, если это помогло.
Eleove
Подсчитать, если значение и цвет
Function CIVAC(Range As Range, Value As Variant, _
Optional ColorIndex As Long = -4142, _
Optional Compare As Integer = 1) As Long
'Title
'Count If Value And Color
'Description
'In a specified contiguous range, counts the number of cells both,
'containing a specified value and having a specified Interior ColorIndex.
Dim arrVal As Variant 'Range Array
Dim arrClr() As Long 'ColorIndex Array
Dim lngVal As Long 'Row Counter
Dim iVal As Integer 'Column Counter
Dim lngResult As Long 'Result Accumulator
'Values
arrVal = Range.Areas(1) 'Prevent Multiple Areas Error
'ColorIndexes
ReDim arrClr(LBound(arrVal) To UBound(arrVal), _
LBound(arrVal, 2) To UBound(arrVal, 2))
For lngVal = LBound(arrClr) To UBound(arrClr)
For iVal = LBound(arrClr, 2) To UBound(arrClr, 2)
arrClr(lngVal, iVal) = Range.Cells(lngVal, iVal).Interior.ColorIndex
Next
Next
'Count
For lngVal = LBound(arrClr) To UBound(arrClr)
For iVal = LBound(arrClr, 2) To UBound(arrClr, 2)
If Not IsError(arrVal(lngVal, iVal)) Then 'Prevent VBA Errors
If InStr(1, arrVal(lngVal, iVal), Value, Compare) <> 0 And _
arrClr(lngVal, iVal) = ColorIndex Then lngResult = lngResult + 1
End If
Next
Next
CIVAC = lngResult
End Function
Это хорошо, но что такое "Color ColorIndex" для цвета в этой ячейке?
Цветовой индекс сотового интерьера
Function CICI(CellRange As Range) As Long
'Title
'Cell Interior Color Index
'Description
'Returns the Interior ColorIndex of a specified cell ('CellRange').
'If 'CellRange' contains more than one cell, it uses the first cell.
CICI = CellRange(1, 1).Interior.ColorIndex
End Function