excel函数技巧:reduce或者concat两种连续出勤统计方法-趣帮office教程网

如图,前面区域为员工每天出勤的统计情况,其中休息和出差途中均不算出勤,如何才能统计出每个员工连续出勤的天数?再些提供两个方法:

公式1如下:

=LET(x,MMULT(SEQUENCE(,2)^0,1*ISNUMBER(FIND({"休";"→"},B5:O5))),

y,CONCAT(IF(x>0," ",1)),

MAX(LEN(TEXTSPLIT(y," ",,1))))

公式1的思路,根据"休";"→"这两个条件判断单元格是否为出勤,,再使用mmult函数将数据合并为一列。

变量y,对列中数值进行判断,结果为真刚统计为1,结果为假则统计为0,再用concat合并为一起,形成由空格分开的由不定数量的1组成的字符串。再用textsplit分列,用len函数求出长度,用max函数求出最大值。

公式2:

=MAX(REDUCE(0,B5:O5,LAMBDA(x,y,VSTACK(x,IF(OR(y="休",ISNUMBER(FIND("→",y))),0,TAKE(x,-1) 1)))))

公式2的思路:利用reduce函数对每天的统计情况进行遍历判断,如果是正常出勤,则将累加器最后一个数值加1,以此实现累加。

这两种方法是处理连续值最常用的办法,大家还有什么好的办法呢?