Excel中如何结合Vlookup、Countif按单元格颜色和查找值自动计数
需求说明
制作风险地图时需实现双条件单元格计数:同时匹配指定风险分类、对应单元格填充色的单元格总数。例:示例中E3单元格计算结果应为2,即旁侧数据表内信用风险分类下的红色高亮风险项共2个。现有上百条风险数据每月更新,需实现自动统计避免重复手动计数,此前尝试适配VBA函数、组合Excel自带函数均未成功。
实现方案
Excel无原生支持按填充色+单元格值双条件计数的内置函数,直接用以下自定义VBA函数即可实现需求:
- 操作步骤
- 按
Alt+F11打开VBA编辑器,右键点击当前工作簿名称,依次选择「插入」-「模块」 - 将下方代码粘贴到弹出的模块代码窗口,保存文件为
.xlsm启用宏格式即可正常使用函数
- 按
Function CountCateColor(riskCateCol As Range, targetCate As String, allRiskRng As Range, colorSampleCell As Range) As Long Application.Volatile Dim cel As Range CountCateColor = 0 For Each cel In allRiskRng ' 校验同行分类匹配+单元格填充色匹配 If riskCateCol.Cells(cel.Row - riskCateCol.Row + 1, 1).Value = targetCate _ And cel.Interior.Color = colorSampleCell.Interior.Color Then CountCateColor = CountCateColor + 1 End If Next End Function
- 函数使用方法
回到工作表界面,在需要输出统计结果的单元格输入公式即可,参数说明:- 第1参数:风险分类所在的整列数据范围
- 第2参数:需要匹配的目标风险分类值
- 第3参数:所有填了风险等级/风险项的单元格范围
- 第4参数:作为颜色匹配样本的单元格(比如要统计红色项就选红色填充的单元格当样本)
对应示例场景,如果风险分类在A2:A200,风险项在B2:B200,E3要统计「信用风险」分类下和D3(红色填充单元格)颜色一致的风险项数量,公式写为:=CountCateColor(A2:A200,"信用风险",B2:B200,D3)
公式下拉、右拉即可批量适配不同分类、不同风险等级颜色的统计需求。
注意:代码中已经加了
Application.Volatile设为易失性函数,修改单元格值、按F9都会触发重算,如果数据量超过1000行觉得卡顿,删掉这行代码即可,需要更新统计结果时手动按F9就行。
内容的提问来源于stack exchange,提问作者elia
相关产品推荐
相关产品推荐

