在各种数据分析场景中,识别最长的连续数据记录是一项非常有用的技能。无论是在体育统计、个人习惯追踪、考勤记录还是工业生产记录中,连续数据记录都能提供关键的洞察。
虽然我们在这个例子中专门计算了考勤数据中最长的连续不在岗天数,但同样的方法可以用于计算许多其他事情,包括:
数据准备
我们以考勤表为例,下表是4月份的考勤表,用√代表在岗,用×代表不在岗。现在需要用函数统计连续不在岗天数的最大值。
LAMBDA 函数
使用 LAMBDA 函数创建可重用的自定义函数,并使用易记名称调用它们。新函数在整个工作簿中可用,其调用类似本机 Excel 函数。可以为常用公式创建函数,无需复制并粘贴此公式(可能容易出错),并有效地将自己的函数添加到本机 Excel 函数库中。此外,LAMBDA 函数无需 VBA、宏或 JavaScript,因此非程序员也可以从使用中获益。
SCAN函数
通过对每个值应用 LAMBDA 来扫描数组,并返回具有每个中间值的数组。
函数结构原理:
SCAN ([initial_value], array, lambda(accumulator, value))
SCAN 函数语法说明:
[initial_value] 设置累加器的起始值。
array 要扫描的数组。
lambda 接受调用而用于扫描数组的 LAMBDA。LAMBDA 接受两个参数:
accumulator 该值累加后作为最终结果返回。
value 应用于数组中每个元素的计算。
本例中,可以在考勤表F8中输入公式即可
=MAX(SCAN(0,B4:AE4,LAMBDA(a,b,IF(b="×",a+1,0))))
这个公式利用SCAN函数从0开始,遍历B4:AE4范围内的每个单元格。每当遇到"×"时,它会增加一个计数器;遇到其他值时,计数器重置为0。最后,MAX函数找出这些计数中的最大值,即最长的连续不在岗天数。
用SCAN+LAMBDA组合函数可以计算连续不在岗的天数
在B2单元格中输入公式:
=SCAN(0,B4:AE4,LAMBDA(a,b,IF(b="×",a+1,0)))
用MAX函数就可以统计出最大值。
辅助行方法
对于不使用SCAN函数的旧版Excel用户,可以通过添加辅助行来解决问题。
辅助行公式
在B5单元格(作为辅助行的起始点)输入以下公式:
=IF(B4="×",SUM(A5,1),0)
这个公式通过辅助行来创建一个连续的不在岗天数。每当第4行的值为"×"时,公式通过SUM函数将1添加到上一列的计数中。如果是其他值,则计数重置为0。
在辅助行下方,使用MAX函数来找出最长不在岗天数:
=MAX(B5:AE5)
可以看出,在Excel数据统计计算中,常用辅助行/列来简化统计。同时,对于Microsoft 365 用户来说,掌握更多的新函数新功能,也会收获新的体验。
精彩推荐
▼▼▼
视频 | INDEX+INDIRECT,Excel多报表取值
视频课推荐
▼▼▼
数据分析视频课会员
数据分析会员
可以长期观看以下课程:
《Excel高效数据管理》
《Excel365高效数据管理(英文版本)》
《Excel数据可视化与动态驾驶舱制作》
《Excel高效应用:HR数字化管理实战》
《Excel高效办公:财务数据管理》《Power BI商务智能数据分析》
《Fine BI商务智能数据分析》
《WPS高效数据管理》八门系列视频课以及所有的单节课程
并赠送三本图书