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

如何在Excel中根据单元格颜色统计员工月度休假天数

Excel按月按颜色统计员工休假天数实现方案

下面提供两种可直接落地的实现方式,按需选择即可:

方案一:宏表函数法(无需编写代码)

  • 第一步:定义名称提取单元格颜色。按Ctrl+F3打开名称管理器,点击「新建」,名称填写getColor,引用位置输入=GET.CELL(38,INDIRECT("RC",FALSE)),点击确定后关闭名称管理器。
  • 第二步:生成辅助区域。在考勤数据右侧插入空白列,选中和考勤单元格一一对应的辅助区域,输入=getColor,按Ctrl+Enter批量填充,就能得到所有考勤单元格的填充色编码。
  • 第三步:编写统计公式。先记录你表格中浅灰色L单元格对应的颜色编码、粉色单元格对应的颜色编码,假设某员工的考勤区域是B2:AG2,对应辅助颜色区域是AH2:BG2,统计公式为:
    =COUNTIFS(B2:AG2,"L",AH2:BG2,浅灰色编码)*1 + COUNTIF(AH2:BG2,粉色编码)*0.5

注意:该方法需要将文件保存为.xlsm启用宏格式,打开文件时需允许启用宏才能正常更新统计结果。

方案二:VBA自定义函数法(稳定性更高,批量统计更方便)

  • 第一步:插入自定义函数代码。按Alt+F11打开VBA编辑器,在左侧工程列表右键点击你的工作簿名称,选择「插入」-「模块」,粘贴以下代码:
Function CountLeave(rng As Range) As Double
    Dim cell As Range
    Dim total As Double
    total = 0
    ' 请将下方两个常量值替换为你表格实际的浅灰色、粉色对应颜色值
    Const GRAY_L As Long = 14277081 
    Const PINK As Long = 13408767 
    For Each cell In rng
        If cell.Interior.Color = GRAY_L And UCase(Trim(cell.Value)) = "L" Then
            total = total + 1
        ElseIf cell.Interior.Color = PINK Then
            total = total + 0.5
        End If
    Next
    CountLeave = total
End Function
  • 第二步:调整颜色参数。选中你表格里的浅灰色L单元格,回到VBA编辑器按Ctrl+G调出立即窗口,输入?ActiveCell.Interior.Color回车就能得到对应颜色的数值,替换代码里的GRAY_L常量值,同理替换粉色的PINK常量值。
  • 第三步:直接调用函数统计。保存文件为.xlsm格式,回到表格页面,在员工对应休假统计单元格输入=CountLeave(该员工整月考勤单元格区域),比如emp4的考勤在B2:AG2,就输入=CountLeave(B2:AG2),回车即可得到总休假天数,下拉公式就能批量完成所有员工的统计。

内容的提问来源于stack exchange,提问作者Mic wer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:18:02