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

考勤追踪:连续5天P/S计数需求,求数组公式或VBA解决方案

Excel考勤连续事假/病假计数方案(无需VBA)

不需要调整现有表格结构,直接用数组公式就能实现基于P(事假)/S(病假)字符的连续天数计数及Occurrence统计,以下分版本给出实现方式:

Excel 365/2021 动态数组方案

假设考勤状态数据在B2:B100(B列从第2行开始记录每日状态),在C2单元格输入以下动态数组公式,公式会自动向下填充:

=LET(
    status_range, B2:B100,
    valid_flag, (status_range="P")+(status_range="S"),
    consecutive_days, SCAN(0, valid_flag, LAMBDA(acc, curr, IF(curr=0, 0, acc+curr))),
    occurrence_count, FLOOR.MATH(consecutive_days/5, 1),
    IF(consecutive_days=0, "", occurrence_count)
)

公式说明:

  • valid_flag:将P/S转换为1,其他状态转换为0,标记有效考勤状态
  • consecutive_days:用SCAN函数累加有效状态,遇到非P/S时重置计数,得到连续有效天数
  • occurrence_count:用FLOOR.MATH对连续天数取整,每5天计为1次Occurrence
  • 最后一行判断:若连续天数为0(当前状态非P/S),则显示空值,否则显示Occurrence次数

旧版Excel(非365)数组方案

如果使用不支持动态数组的旧版Excel,需要分两步实现:

  1. 计算连续有效天数:在C2单元格输入以下数组公式,按Ctrl+Shift+Enter确认,然后下拉填充:
=IF(OR(B2="P",B2="S"),COUNT(INDIRECT("B"&MAX(IF(NOT(OR(B$1:B1="P",B$1:B1="S")),ROW(B$1:B1),0))+1&":B"&ROW())),0)
  1. 统计Occurrence次数:在D2单元格输入公式,下拉填充:
=IF(C2=0,"",FLOOR.MATH(C2/5,1))

方案优势

无需启用VBA宏,直接通过公式实现需求,表格结构无需调整,仅需保证状态列使用P/S标记即可。

内容的提问来源于stack exchange,提问作者John Hopper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:35:15