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

Excel索引筛选与匹配求助:生成符合条件的多行结果列表

多行匹配结果输出的Excel公式方案

嘿,我懂你现在的困扰——用普通的INDEX+MATCH组合只能揪出第一个符合条件的结果,下拉也没法列出所有匹配的行对吧?下面给你分两种Excel版本的可行方案:

方案一:支持动态数组的Excel(365/2021及以后)

这个版本的Excel自带的FILTER函数简直是为批量匹配量身定做的,操作超简单:

  • 获取列表编号的公式:
    =FILTER($B$2:$B$13,$A$2:$A$13=F2,"无匹配结果")
    
  • 获取油漆颜色的公式:
    =FILTER($C$2:$C$13,$A$2:$A$13=F2,"无匹配结果")
    

说明:输入公式后直接回车,Excel会自动溢出所有符合条件的结果,不用手动下拉扩展,而且当F2的条件变化时,结果会自动更新。最后一个参数"无匹配结果"可以换成你想要的提示文本,或者留空显示空白。

方案二:旧版Excel(2019及更早,不支持动态数组)

这类版本需要用数组公式结合SMALL函数来实现批量提取:

  1. 在要输出结果的第一个单元格(比如G2)输入编号提取公式:
    =IFERROR(INDEX($B$2:$B$13,SMALL(IF($A$2:$A$13=F2,ROW($A$2:$A$13)-ROW($A$2)+1),ROWS($G$2:G2))),"")
    
    输入完成后,必须按Ctrl+Shift+Enter来确认数组公式(公式会自动被大括号{}包裹)。
  2. 下拉这个公式到下方单元格,直到出现空白为止,所有符合条件的编号就会依次显示。
  3. 提取油漆颜色的话,只需要把公式里的$B$2:$B$13替换成$C$2:$C$13就行:
    =IFERROR(INDEX($C$2:$C$13,SMALL(IF($A$2:$A$13=F2,ROW($A$2:$A$13)-ROW($A$2)+1),ROWS($G$2:G2))),"")
    

说明:这个公式的逻辑是先用IF找出所有符合条件的行的相对位置,再用SMALL按顺序取出第1、2、3...个位置,最后用INDEX对应取值;IFERROR是用来处理没有更多匹配结果时的情况,避免显示错误值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:10:25