Excel中多组行的最新工作日期提取(仅显示在分组首行)
分组提取组内最新日期(仅首行显示)
示例数据
| Element | Work Date | Most recent work date (output I need) |
|---|---|---|
| JOE 123 | 2022-02-18 | |
| 2022-02-19 | ||
| joe 999 | 2023-03-19 | |
| 2023-03-10 | ||
| Cell 1 | 2024-03-12 | |
方法1:Excel 365/2021 动态数组公式
在首行目标单元格(如C2)输入以下公式,下拉自动适配所有行:
=IF(A2<>"", MAX(B2:INDEX(B:B, XMATCH(TRUE, A3:A<>"",,1)+ROW(A2)-1)), "")
- 逻辑:
A2<>""判断当前行是否为组首行;XMATCH定位下一个非空组首行的位置,以此确定当前组的结束行;MAX计算组内日期最大值,非组首行返回空值。
方法2:旧版Excel 数组公式
在C2单元格输入公式后按Ctrl+Shift+Enter触发数组计算,再下拉:
=IF(A2<>"", MAX(INDIRECT("B"&ROW()&":B"&IFERROR(MATCH("*",A3:A$1048577,0)+ROW()-1,1048576))), "")
- 逻辑:用
MATCH查找下一个非空Element行,INDIRECT构建当前组的日期范围,MAX取最大值,非组首行留空。
方法3:Power Query 批量处理(超大数据量推荐)
针对数据量极大的场景,用Power Query效率更高:
- 选中透视表数据区域,点击「数据」→「从表格/区域」导入Power Query编辑器
- 添加索引列:「添加列」→「索引列」→「从1开始」
- 标记组首行:添加自定义列,公式为
= if [Element] <> null then "Group" else null - 填充组标记:选中自定义列→「转换」→「填充」→「向下」
- 分组计算最大值:点击「转换」→「分组依据」,分组列选自定义列,操作选「最大值」,列选「Work Date」,新列名设为「最新工作日期」
- 合并原表与分组结果:点击「主页」→「合并查询」,以自定义列为匹配键,选择分组后的表,合并后展开「最新工作日期」列
- 保留首行值:添加自定义列,公式为
= if [Element] <> null then [最新工作日期] else null - 删除多余列,点击「主页」→「关闭并上载」将结果导入Excel
内容的提问来源于stack exchange,提问作者racheljessica
相关产品推荐
相关产品推荐

