数组公式仅返回第二条匹配行数据,无法获取首行数据问题排查
问题分析与公式修正
问题根源
你的数组公式跳过首条匹配数据,核心原因有两点:
- 匹配范围包含表头行:原公式用
'Paste-Data'!$B$1:$B$4000作为匹配范围,包含了源表第1行的表头,当ROW函数返回行号时,首条有效数据的行号是2,但ROWS($H$1:$H2)在B3单元格时返回2,导致SMALL直接取第二个匹配项,跳过了第一个。 - 计数范围逻辑错误:
ROWS($H$1:$H2)的引用和当前目标单元格(B3)不对应,应该从当前行开始计数,确保第一次提取时取第1个匹配结果。
修正后的公式
目标表B3(提取源表H列QTY数据)
输入后按Ctrl+Shift+Enter确认(Excel 365/2021可直接回车):
=IFERROR(INDEX('Paste-Data'!$H:$H,SMALL(IF('Paste-Data'!$B$2:$B$4000=$A$1,ROW('Paste-Data'!$B$2:$B$4000)),ROWS($B$3:$B3))),"")
- 调整匹配范围为
'Paste-Data'!$B$2:$B$4000,跳过源表第1行表头,避免无效匹配 - 直接引用源表H列,无需计算列索引,减少出错概率
- 用
ROWS($B$3:$B3)作为计数依据,在B3时返回1,B4时返回2,依次递增,确保按顺序提取所有匹配项
目标表E3(提取源表G列DESC数据)
同样按Ctrl+Shift+Enter确认(Excel 365/2021可直接回车):
=IFERROR(INDEX('Paste-Data'!$G:$G,SMALL(IF('Paste-Data'!$B$2:$B$4000=$A$1,ROW('Paste-Data'!$B$2:$B$4000)),ROWS($E$3:$E3))),"")
- 逻辑和B3公式一致,仅调整为引用源表G列,计数范围对应E列当前行
Excel 365/2021版本简化方案
如果使用支持动态数组的Excel版本,直接用FILTER函数更高效,无需下拉填充,公式会自动溢出所有匹配结果:
- B3单元格:
=IFERROR(FILTER('Paste-Data'!$H:$H,'Paste-Data'!$B$2:$B$4000=$A$1),"")
- E3单元格:
=IFERROR(FILTER('Paste-Data'!$G:$G,'Paste-Data'!$B$2:$B$4000=$A$1),"")
内容的提问来源于stack exchange,提问作者Colin
相关产品推荐
相关产品推荐

