You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Excel匹配多段部分文本并返回最大日期的实现方案

解决Excel多条件部分匹配并返回最大日期的问题

我来帮你搞定这个需求!你需要同时匹配Sheet2中A、B列的部分文本到Sheet1的A列,然后返回符合条件的最大日期,无匹配则显示"NA"。之前用MAX+INDEX/MATCH+SEARCH没成功,大概率是多条件逻辑的组合没处理好,这里给你两个实用的解决方案:

方案1:使用MAXIFS(适合Excel 2019/365及以后版本)

这个公式最简洁,直接利用MAXIFS的多条件筛选能力,结合通配符实现部分匹配:

在Sheet2的C1单元格输入以下公式,然后下拉填充到C3:

=IFERROR(MAXIFS(Sheet1!$B$1:$B$2,Sheet1!$A$1:$A$2,"*"&Sheet2!A1&"*",Sheet1!$A$1:$A$2,"*"&Sheet2!B1&"*"),"NA")

公式拆解:

  • MAXIFS(Sheet1!$B$1:$B$2, ...):指定要取最大值的目标区域是Sheet1的B列日期
  • Sheet1!$A$1:$A$2,"*"&Sheet2!A1&"*":第一个匹配条件:Sheet1的A列单元格包含Sheet2当前行A列的文本(*是通配符,代表任意长度的字符)
  • Sheet1!$A$1:$A$2,"*"&Sheet2!B1&"*":第二个匹配条件:Sheet1的A列单元格同时包含Sheet2当前行B列的文本
  • IFERROR(..., "NA"):如果没有找到符合双重条件的记录,返回"NA"替代默认的错误值

方案2:数组公式(兼容旧版Excel)

如果你的Excel版本不支持MAXIFS,可以用数组公式实现同样的效果:

在Sheet2的C1单元格输入以下公式,旧版Excel需要按Ctrl+Shift+Enter确认,新版直接回车即可,然后下拉填充:

=IFERROR(MAX(IF((ISNUMBER(SEARCH(Sheet2!A1,Sheet1!$A$1:$A$2)))*(ISNUMBER(SEARCH(Sheet2!B1,Sheet1!$A$1:$A$2))),Sheet1!$B$1:$B$2)),"NA")

公式拆解:

  • ISNUMBER(SEARCH(Sheet2!A1,Sheet1!$A$1:$A$2)):检查Sheet2的A1文本是否存在于Sheet1的A列单元格中,返回由TRUE/FALSE组成的数组
  • 两个ISNUMBER(SEARCH...)相乘:相当于逻辑"与"运算,只有两个条件都满足的位置才会返回1,其他位置为0
  • IF(..., Sheet1!$B$1:$B$2):将符合双重条件的日期保留,不符合的位置返回FALSE
  • MAX(...):从筛选出的日期中提取最大值
  • IFERROR:处理无匹配的情况,返回"NA"

针对你的示例验证:

  • Sheet2的C2:Sheet1的A1和A2都包含"KH_079"和"Baker",对应的日期是12/5/2020 11:58:00 PM和12/5/2020 11:31:00 PM,MAX取到较大的前者,完全符合预期
  • Sheet2的C1和C3:没有同时匹配A、B列文本的记录,所以返回"NA",和你想要的结果一致

额外注意事项:

  • 确保Sheet1的B列是日期格式,而非文本格式,否则MAX无法正确计算最大值
  • 公式中Sheet1的区域用$锁定(如$A$1:$A$2),下拉填充时不会随行数变化而偏移

内容的提问来源于stack exchange,提问作者Mir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:39:57