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

求无VBA的Excel公式:按姓名和出生年份返回多地点

解决方案:多条件匹配返回所有结果的Excel公式

适用Excel 365/2021及以上版本(支持动态数组)

直接用FILTER+TEXTJOIN组合就能一次性返回所有匹配的地点,并用分隔符拼接成列表:

假设要匹配的姓名在单元格J2,出生年份在K2,在目标单元格输入:

=TEXTJOIN("、", TRUE, FILTER(F:F, (G:G=J2)*(H:H=K2), "无匹配结果"))
  • FILTER(F:F, (G:G=J2)*(H:H=K2), "无匹配结果"):筛选出G列等于J2且H列等于K2的所有F列数据,无匹配时返回指定提示文本
  • TEXTJOIN("、", TRUE, ...):把筛选结果用顿号(可替换为逗号、空格等其他分隔符)拼接成字符串,TRUE参数用于忽略空值

如果需要将每个地点单独放在一个单元格(自动溢出填充),直接使用FILTER即可:

=FILTER(F:F, (G:G=J2)*(H:H=K2), "无匹配结果")

适用旧版Excel(不支持动态数组)

用数组公式结合INDEX+SMALL+IF,按顺序提取每个匹配结果:

从单元格L2开始输入公式,输入完成后按Ctrl+Shift+Enter(数组公式专用快捷键):

=IFERROR(INDEX(F:F, SMALL(IF((G:G=$J$2)*(H:H=$K$2), ROW(G:G)), ROW(A1))), "")

下拉填充公式直到出现空值:

  • IF((G:G=$J$2)*(H:H=$K$2), ROW(G:G)):生成所有满足条件的行号数组,不满足条件的返回FALSE
  • SMALL(..., ROW(A1)):依次提取第1、2、3...个符合条件的行号(下拉时ROW(A1)自动变为ROW(A2),以此类推)
  • INDEX(F:F, ...):根据行号提取对应F列的地点
  • IFERROR(..., ""):无更多匹配结果时返回空值,避免显示错误信息

注意事项

  • 建议使用实际数据范围(如F2:F1000)替代整列引用(F:F),提升公式运行效率
  • 若姓名或出生年份存在多余空格,可先用TRIM函数清洗数据,避免匹配失败

内容的提问来源于stack exchange,提问作者Simon.G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:46:00