按最新日期取值报错求助:提取每个PAIRDID最后标记Y的AUDIT DATE
嘿,我来帮你搞定这个Excel公式问题!你需要为每个PAIRDID提取最后一条标记为Y的PREFERRED对应的AUDIT DATE,对吧?我给你分两种场景提供解决方案,适配不同的Excel版本:
解决方案
1. 适用于Excel 365/2021(支持动态数组)
直接在F2单元格输入以下公式,按下回车后它会自动填充整个结果列,不用手动下拉:
=XLOOKUP(2,1/($A$2:$A$100=A2)/($C$2:$C$100="Y"),$B$2:$B$100,"",0,-1)
公式说明:
$A$2:$A$100=A2匹配当前行的PAIRDID$C$2:$C$100="Y"筛选出PREFERRED标记为Y的记录1/()会把符合双重条件的记录转为1,不符合的转为错误值- XLOOKUP的最后一个参数
-1表示从后往前查找,所以会返回最后一条符合条件的AUDIT DATE - 把公式里的
$A$2:$A$100、$B$2:$B$100、$C$2:$C$100替换成你实际的数据范围就行
2. 适用于旧版Excel(不支持动态数组)
在F2单元格输入以下公式,然后按 Ctrl+Shift+Enter 组合键结束(这是数组公式的输入方式),之后下拉填充到所有行:
=IFERROR(LOOKUP(2,1/(($A$2:$A$100=A2)*($C$2:$C$100="Y")),$B$2:$B$100),"")
如果你的Excel版本不支持IFERROR,可以换成:
=IF(MAX(IF(($A$2:$A$100=A2)*($C$2:$C$100="Y"),$B$2:$B$100))=0,"",MAX(IF(($A$2:$A$100=A2)*($C$2:$C$100="Y"),$B$2:$B$100)))
公式说明:
- LOOKUP的逻辑和XLOOKUP类似,通过
1/()筛选符合条件的记录,找最后一个匹配项 - MAX函数则是直接取符合条件的所有日期里的最大值(也就是最新的日期),适合日期格式的字段
- 外层的IF/IFERROR是为了处理没有符合条件记录的情况,返回空值而不是0或错误提示
额外注意:
- 确保你的AUDIT DATE列(B列)是正确的日期格式,否则公式可能无法正确识别日期大小
- 如果数据行数很多,记得调整公式里的行号范围,比如数据到200行就改成
$A$2:$A$200
内容的提问来源于stack exchange,提问作者Atul sanwal
相关产品推荐
相关产品推荐

