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

如何用Index()和Match()获取数组中重复值的非首个匹配结果?

提取重复匹配项的第N个对应值

针对你遇到的Match函数仅返回首个匹配结果的问题,根据Excel版本不同,有以下两种可行方案:

方案1:Excel 365/2021及以上版本(支持动态数组)

直接使用FILTER函数筛选所有匹配结果,结果会自动溢出到下方单元格,无需手动下拉:
假设左侧VN_Code列是A列,对应值列是B列,右侧待匹配的VN04在单元格D2,在E2单元格输入公式:

=FILTER(B:B, A:A=D2, "无匹配结果")

执行后,所有与VN04匹配的值会依次填充到E2、E3等单元格,第二个结果就是你需要的C39。

方案2:旧版Excel(不支持动态数组)

使用INDEX+SMALL+IF的数组公式组合,定位第N个匹配值:
如果要获取VN04的第2个匹配值,在目标单元格输入:

=INDEX(B:B, SMALL(IF(A:A=D2, ROW(A:A), ""), 2))

输入完成后,需按Ctrl+Shift+Enter(Windows)或Cmd+Shift+Enter(Mac)确认数组公式,而非直接回车。

  • 原理:IF(A:A=D2, ROW(A:A), "")生成所有匹配VN04的行号数组;SMALL(..., 2)提取数组中第2个最小行号;INDEX根据行号提取B列对应的值。

另外也可以用COUNTIF构建唯一匹配标识,实现下拉自动获取第N个结果:
在E2单元格输入公式后下拉:

=INDEX(B:B, MATCH(D2&"_"&COUNTIF(A$1:A1, A:A), A:A&"_"&COUNTIF(A$1:A1, A:A), 0))

这个公式通过COUNTIF(A$1:A1, A:A)累计当前行之前的匹配次数,将VN_Code与次数拼接成唯一标识,再用Match定位对应行。

内容的提问来源于stack exchange,提问作者an nguyễn hoàng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:28:22