如何使用COUNTIF在条件格式下对单元格的颜色进行计数?

时间:2019-07-01 21:18:43

标签: excel-formula excel-2016

enter image description here我正在尝试弄清楚如何构造一个countif公式。我有一个数据表,以及(从广义上讲)两组条件格式: -对于D到K列的范围,数据为下拉“是/否”列表。如果这些项目中的任何一个标记为“否”,并且C列中的日期在今天的30天内,则整行变为红色。我不知道如何按照一个大规则执行此操作,因此D到K之间的每一列都有一个规则。 -编辑行时,L列会自动添加时间戳。如果这些日期中的任何一个超过30天,该行就会变成灰色。

在顶部,我想对红色单元格和灰色单元格进行行计数。我该怎么办?

2 个答案:

答案 0 :(得分:0)

第1步:

有按颜色计数的选项,但是为此您必须在excel中安装Kutools 然后,您可以轻松使用这些功能。

下面是下载Kutools插件和示例所需公式的链接。

链接: https://www.extendoffice.com/download/kutools-for-excel.html

公式:= COUNTBYCELLCOLOR($ I $ 5:$ I $ 19,$ K6)

enter image description here

第2步:

如果上述选项不符合您的要求,请通过VBA参考以下链接。

链接1:需要安装Kutools。

https://www.extendoffice.com/documents/excel/2651-excel-count-cells-by-color-conditional-formatting.html

链接2:VBA代码

https://excelribbon.tips.net/T011725_Using_COUNTIF_with_Colors.html

答案 1 :(得分:0)

请尝试以下一种通过VBA进行条件格式的颜色。

在使用公式之前,您必须确定条件格式颜色的RGB,然后您可以通过在空白单元格中输入RGB手动进行着色,然后该功能将起作用。

VBA代码:

Function COUNTConditionColorCells(CellsRange As Range, ColorRng As Range)
Dim Bambo As Boolean
Dim dbw As String
Dim CFCELL As Range
Dim CF1 As Single
Dim CF2 As Double
Dim CF3 As Long
Bambo = False
For CF1 = 1 To CellsRange.FormatConditions.Count
If CellsRange.FormatConditions(CF1).Interior.ColorIndex = ColorRng.Interior.ColorIndex Then
Bambo = True
Exit For
End If
Next CF1
CF2 = 0
CF3 = 0
If Bambo = True Then
For Each CFCELL In CellsRange
dbw = CFCELL.FormatConditions(CF1).Formula1
dbw = Application.ConvertFormula(dbw, xlA1, xlR1C1)
dbw = Application.ConvertFormula(dbw, xlR1C1, xlA1, , ActiveCell.Resize(CellsRange.Rows.Count, CellsRange.Columns.Count).Cells(CF3 + 1))
If Evaluate(dbw) = True Then CF2 = CF2 + 1
CF3 = CF3 + 1
Next CFCELL
Else
COUNTConditionColorCells = "NO-COLOR"
Exit Function
End If
COUNTConditionColorCells = CF2
End Function

以下是以下步骤:

enter image description here

enter image description here

enter image description here

对于条件颜色的总和:

Function SumConditionColorCells(CellsRange As Range, ColorRng As Range)
Dim Bambo As Boolean
Dim dbw As String
Dim CFCELL As Range
Dim CF1 As Single
Dim CF2 As Double
Dim CF3 As Long
Bambo = False
For CF1 = 1 To CellsRange.FormatConditions.Count
If CellsRange.FormatConditions(CF1).Interior.ColorIndex = ColorRng.Interior.ColorIndex Then
Bambo = True
Exit For
End If
Next CF1
CF2 = 0
CF3 = 0
If Bambo = True Then
For Each CFCELL In CellsRange
dbw = CFCELL.FormatConditions(CF1).Formula1
dbw = Application.ConvertFormula(dbw, xlA1, xlR1C1)
dbw = Application.ConvertFormula(dbw, xlR1C1, xlA1, , ActiveCell.Resize(CellsRange.Rows.Count, CellsRange.Columns.Count).Cells(CF3 + 1))
If Evaluate(dbw) = True Then CF2 = CF2 + CFCELL.Value
CF3 = CF3 + 1
Next CFCELL
Else
SumConditionColorCells = "NO-COLOR"
Exit Function
End If
SumConditionColorCells = CF2
End Function