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

求Excel函数:判断目录列单元格是否同时包含两个指定字符串

Excel函数实现书目双条件匹配并定位

核心解决逻辑

不能直接把姓名和标题塞到同一个SEARCH里(因为中间夹着日期等内容),得分别判断目录单元格是否包含姓名、是否包含标题,再找到同时满足两个条件的单元格位置。

分版本公式

适用于Excel 365/2021(动态数组版本)

假设:

  • 完整目录列是A1:A80000
  • 当前行的姓名单元格是C2(格式为「姓,名」)
  • 当前行的标题单元格是D2

直接用这个公式返回匹配到的单元格地址,下拉即可批量计算:

=XLOOKUP(TRUE,ISNUMBER(SEARCH(C2,$A$1:$A$80000))*ISNUMBER(SEARCH(D2,$A$1:$A$80000)),ADDRESS(ROW($A$1:$A$80000),COLUMN($A$1:$A$80000)),"无匹配")

如果只需要行号,用这个更简洁:

=XLOOKUP(TRUE,ISNUMBER(SEARCH(C2,$A$1:$A$80000))*ISNUMBER(SEARCH(D2,$A$1:$A$80000)),ROW($A$1:$A$80000),"无匹配")

适用于旧版Excel(非365/2021)

需要按Ctrl+Shift+Enter作为数组公式输入,下拉批量应用:

=IFERROR(ADDRESS(MATCH(1,ISNUMBER(SEARCH(C2,$A$1:$A$80000))*ISNUMBER(SEARCH(D2,$A$1:$A$80000)),0),COLUMN($A$1:$A$80000)),"无匹配")

返回行号的版本:

=IFERROR(MATCH(1,ISNUMBER(SEARCH(C2,$A$1:$A$80000))*ISNUMBER(SEARCH(D2,$A$1:$A$80000)),0),"无匹配")

公式拆解

  • ISNUMBER(SEARCH(C2,$A$1:$A$80000)):遍历目录列,返回每个单元格是否包含姓名的逻辑值数组(TRUE=包含,FALSE=不包含)
  • ISNUMBER(SEARCH(D2,$A$1:$A$80000)):同理返回是否包含标题的逻辑值数组
  • 两个数组相乘:逻辑值会自动转为1(TRUE)和0(FALSE),只有同时满足两个条件的位置会得到1,其余为0
  • XLOOKUP/MATCH找到第一个值为1的位置,ADDRESS把行号列号转换成单元格地址

优化建议

因为目录有8万行,建议不要用整列A:A,而是限定范围$A$1:$A$80000,能显著提升公式计算速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:57:40