如何在Excel中实现Max<List<List>>?求空行分隔区域最大和
Excel中按空行分组求最大组和的优雅解法
方法一:动态数组公式(Excel 365/2021及以上版本)
利用LET+SCAN+SUMIFS组合实现无硬编码的分组求和取最大值,完全匹配「按空行分割为子列表→遍历求和→取最大」的需求逻辑:
=LET( 数据列, A:A, 组ID, SCAN(0, 数据列, LAMBDA(上一个组号, 当前单元格, IF(ISBLANK(当前单元格), 上一个组号, IF(ISBLANK(INDEX(数据列, ROW(当前单元格)-1)), 上一个组号+1, 上一个组号) ) )), 有效组, UNIQUE(FILTER(组ID, 组ID<>0)), 组求和, SUMIFS(数据列, 组ID, 有效组), MAX(组求和) )
公式逻辑拆解:
- 组ID生成:用
SCAN遍历A列,空行保持当前组号,非空行若上方是空白则新建组(组号+1),否则沿用当前组号,完成自动分组标记。 - 提取有效组:过滤掉空行对应的无效组号,保留所有实际存在的组ID。
- 分组求和:用
SUMIFS按组ID对A列数据求和。 - 取最大值:用
MAX从所有组的求和结果中选出最大数。
若你的Excel支持GROUPBY函数(2023及以上版本),可简化为更短的公式:
=MAX(GROUPBY(SCAN(0,A:A,LAMBDA(a,b,IF(ISBLANK(b),a,IF(ISBLANK(OFFSET(b,-1,0)),a+1,a)))),A:A,SUM,,0))
方法二:Power Query(全版本通用,适合大数据量)
如果需要重复处理或数据量较大,用Power Query实现更灵活:
- 选中A列数据,点击「数据」→「从表格/范围」(确认无标题)。
- 在编辑器中:
- 添加索引列(「添加列」→「索引列」→「从0开始」)。
- 添加自定义列,公式为:
=List.Count(List.Select(Previous([Index]), each ISBLANK(Source[Column1]{_}))),该列会为每组分配唯一标识。 - 筛选掉空行:点击「Column1」列的筛选按钮,取消勾选「(空白)」。
- 分组求和:点击「转换」→「分组依据」,分组列选自定义列,新列名设为「组和」,操作选「求和」,列选「Column1」。
- 提取最大值:选中「组和」列,点击「转换」→「统计信息」→「最大值」。
- 点击「关闭并上载」,结果会自动导入Excel单元格。
内容的提问来源于stack exchange,提问作者James Raitsev
相关产品推荐
相关产品推荐

