You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于VBA实现单元格颜色+员工姓名双条件统计转诊状态数量

扩展VBA代码实现按员工+颜色统计转诊数

1. 新增双重条件统计的自定义函数

你需要一个能同时匹配员工姓名和单元格颜色的自定义函数,直接把这段代码添加到你的VBA模块里即可(可以保留原有的单颜色统计函数,不冲突):

Public Function CountByEmployeeAndColor(nameRng As Range, targetName As String, colorRng As Range, Red As Long, Green As Long, Blue As Long) As Long
    Dim lCount As Long
    Dim i As Long
    
    ' 校验姓名列和颜色列行数是否一致,避免统计出错
    If nameRng.Rows.Count <> colorRng.Rows.Count Then
        CountByEmployeeAndColor = CVErr(xlErrRef)
        Exit Function
    End If
    
    For i = 1 To nameRng.Rows.Count
        ' 同时匹配目标姓名和指定颜色
        If nameRng.Cells(i, 1).Value = targetName And colorRng.Cells(i, 1).Interior.Color = RGB(Red, Green, Blue) Then
            lCount = lCount + 1
        End If
    Next i
    
    CountByEmployeeAndColor = lCount
End Function

2. 在Excel中调用函数的方法

假设你的数据布局是:

  • A列:员工姓名(数据范围比如A2:A100)
  • B列:带颜色的转诊状态(数据范围B2:B100)
  • 统计表从D列开始:D列是要统计的员工姓名,E、G、I列分别对应active、maybe、inactive的统计结果

举个例子,统计D2单元格员工的**active状态(红色,RGB值255,0,0)**数量,在E2输入:
=CountByEmployeeAndColor($A$2:$A$100, D2, $B$2:$B$100, 255, 0, 0)
下拉填充E列,就能得到所有员工的active状态数量。

同理,maybe状态(比如黄色RGB(255,255,0))就在G2输入:
=CountByEmployeeAndColor($A$2:$A$100, D2, $B$2:$B$100, 255, 255, 0)
inactive状态(比如灰色RGB(192,192,192))则用对应的RGB参数替换即可。

3. 保留颜色编码的小技巧

要让统计单元格和状态颜色对应,不用文字说明也能直观区分:

  • 选中E列(active统计列),打开「条件格式」→「新建规则」→「使用公式确定要设置格式的单元格」
  • 输入公式=E2>0,点击「格式」设置单元格填充色为红色,这样有统计数据的单元格就会显示对应状态的颜色。
  • 重复这个操作给maybe、inactive列设置对应颜色。

4. 实用提示

  • 如果你不确定状态颜色的准确RGB值:选中对应颜色的单元格,打开VBA编辑器按Ctrl+G调出立即窗口,输入?ActiveCell.Interior.Color回车,得到的十进制数可以直接替换公式里的RGB(Red,Green,Blue)
  • 每次修改单元格颜色后,按F9刷新计算;如果想要自动刷新,在函数开头加一行Application.Volatile True,这样颜色变化时公式会自动重算。

内容的提问来源于stack exchange,提问作者Colin Graham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 17:55:21