Google Sheets 结合Index Match与Max Date的匹配公式实现方法
Google Sheets 按ID取最新日期对应Phase公式方案
核心公式(INDEX+MATCH+MAX逻辑实现)
假设数据列对应规则:
- A列:Last Modified Date(最后修改日期)
- B列:ID Number(ID编号)
- C列:Phase(阶段值)
- D列:输出Current Phase(当前阶段,即预期结果列)
在D2单元格输入以下公式,下拉填充即可得到和预期完全一致的结果:
=INDEX(C:C,MATCH(1,(B:B=B2)*(A:A=MAXIFS(A:A,B:B,B2)),0))
公式逻辑拆解
MAXIFS(A:A,B:B,B2):先筛选出和当前行ID一致的所有记录,提取其中最大(最新)的日期值(B:B=B2)*(A:A=MAXIFS(...)):逐行判断两个条件:ID和当前行一致、日期等于该ID下的最新日期,两个条件同时满足时返回1,否则返回0MATCH(1, ... ,0):精确查找值为1的行位置INDEX(C:C, 行号):从C列Phase字段中提取对应行的阶段值
可选简化写法(新版Google Sheets适用)
如果你的表格支持XLOOKUP函数,可以用更短的公式实现相同效果,计算效率更高:
=XLOOKUP(1,(B:B=B2)*(A:A=MAXIFS(A:A,B:B,B2)),C:C)
结果校验
对照提供的示例数据验证:
- ID 165432的最新日期为2022/3/2,对应Phase为Health Check,和预期值一致
- ID 412356的最新日期为2022/6/23,对应Phase为Adoption,和预期值一致
使用注意
- 若同一ID下有多条记录的修改日期同为最大值,公式默认返回范围中从上到下第一条匹配记录的Phase值
- 数据量较大时,建议将公式中的整列引用(如A:A、B:B)替换为实际数据范围(如A2:A1000、B2:B1000),减少计算资源占用,提升加载速度
内容的提问来源于stack exchange,提问作者Andrew Scott
相关产品推荐
相关产品推荐

