如何在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
相关产品推荐
相关产品推荐

