如何在Excel中用Count函数统计指定列红色填充单元格数量
统计Excel中手动填充红色的离职员工数量
因为你是手动给离职员工的A列单元格填充红色(非条件格式),Excel内置函数无法直接识别单元格填充颜色,需要通过自定义函数(UDF)或VBA宏来实现统计:
方法一:自定义函数(实时更新统计)
- 按
Alt + F11打开VBA编辑器 - 右键点击左侧项目窗口中的当前工作簿 → 插入 → 模块
- 将以下代码粘贴到模块窗口中:
Function CountRedCells(rng As Range) As Long Dim cell As Range Dim count As Long count = 0 ' 遍历指定范围,匹配默认红色(ColorIndex=3,适配手动填充的标准红色) For Each cell In rng If cell.Interior.ColorIndex = 3 Then count = count + 1 End If Next cell CountRedCells = count End Function
- 返回Excel表格,在顶部的目标单元格中输入公式:
=CountRedCells(A2:A1000)
(将A2:A1000替换为你实际的员工数据范围,避开表头行;如果要统计整列,用=CountRedCells(A:A),但推荐指定具体范围提升效率) - 后续手动给A列单元格填充红色后,按
F9即可刷新统计结果
方法二:VBA宏(一次性统计)
如果不需要实时更新,只想一次性统计当前红色单元格数量:
- 同样按
Alt + F11打开VBA编辑器,插入模块 - 粘贴以下代码:
Sub CountRedEmployees() Dim ws As Worksheet Dim lastRow As Long Dim redCount As Long Dim i As Long ' 指定要统计的工作表,替换为你的表名,比如"2024员工绩效" Set ws = ThisWorkbook.Sheets("员工表") ' 获取A列最后一行数据的行号 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row redCount = 0 ' 从第2行开始遍历(假设第1行是表头) For i = 2 To lastRow If ws.Cells(i, "A").Interior.ColorIndex = 3 Then redCount = redCount + 1 End If Next i ' 将统计结果写入B1单元格,可自行修改目标位置 ws.Range("B1").Value = "离职员工数量:" & redCount End Sub
- 按
F5运行宏,统计结果会自动写入指定单元格
注意事项
- 如果你的红色不是Excel默认红色,可先选中一个红色单元格,在VBA编辑器的立即窗口中输入
?ActiveCell.Interior.ColorIndex,回车后得到对应的ColorIndex,替换代码中的3即可 - 自定义函数在Excel保存后,下次打开需要启用宏才能正常使用
- 若后续改用条件格式标记离职员工,可直接用
COUNTIF结合条件格式的规则,无需VBA
内容的提问来源于stack exchange,提问作者Abcderia
相关产品推荐
相关产品推荐

