已解决:使用Arrayformula获取不确定行中以0分隔的数列最大值
实现方案
适用于Google Sheets环境,可通过单个溢出数组公式自动完成分组求最大值,无需手动下拉填充。
公式实现
适用场景:原始数据按列存储(以A列为例,从A1开始)
方案1:每组所有行都显示本组最大值
=LET( 组号,SCAN(0,A:A,LAMBDA(累计值,当前值,IF(当前值=0,累计值+1,累计值))), BYROW(组号,LAMBDA(g,MAX(FILTER(A:A,组号=g)))) )
方案2:仅每组开头的0所在行显示最大值,其余行留空
=LET( 组号,SCAN(0,A:A,LAMBDA(累计值,当前值,IF(当前值=0,累计值+1,累计值))), MAP(A:A,组号,LAMBDA(当前值,所属组,IF(当前值=0,MAX(FILTER(A:A,组号=所属组)),""))) )
逻辑说明
- 先用
SCAN函数遍历原始数据,每遇到数值为0的单元格就把组编号+1,其余单元格沿用当前组编号,完成自动分组 - 通过
LET函数缓存分组结果,避免重复计算,提升公式运行效率 - 最后根据需求输出每组最大值即可
调整说明
如果你的原始数据是按行存储,只需要把公式中的A:A替换为对应行范围(比如1:1代表第一行),把BYROW替换为BYCOL即可正常运行。
内容的提问来源于stack exchange,提问作者yoenoess
相关产品推荐
相关产品推荐

