Excel跨工作表多值匹配:如何横向返回对应列的所有匹配数据?
多匹配项横向提取解决方案
一、Excel 365/2021 动态数组解法
直接用FILTER结合TRANSPOSE即可一步实现,假设目标数据在Sheet2,匹配列为A列(可根据实际调整),要提取的是H列数据:
=TRANSPOSE(FILTER(Sheet2!H:H, (Sheet2!A:A=C2)+(Sheet2!A:A=C3), ""))
(Sheet2!A:A=C2)+(Sheet2!A:A=C3):用逻辑或筛选出A列等于C2或C3的行FILTER提取对应H列的所有匹配值TRANSPOSE将纵向结果转为横向输出
如果需要去除重复值,可嵌套UNIQUE:
=TRANSPOSE(UNIQUE(FILTER(Sheet2!H:H, (Sheet2!A:A=C2)+(Sheet2!A:A=C3), "")))
二、旧版Excel(无动态数组)解法
使用INDEX+SMALL+IF数组公式,输入后需按Ctrl+Shift+Enter确认(不要直接回车)。假设从当前单元格D2开始横向输出:
=IFERROR(INDEX(Sheet2!H:H, SMALL(IF((Sheet2!A:A=C2)+(Sheet2!A:A=C3), ROW(Sheet2!A:A)), COLUMN(A1))), "")
输入完成后向右拖动填充柄,直到出现空值即可。
IF((Sheet2!A:A=C2)+(Sheet2!A:A=C3), ROW(Sheet2!A:A)):生成所有匹配行的行号数组SMALL(..., COLUMN(A1)):横向拖动时,COLUMN(A1)会依次变为COLUMN(B1)、COLUMN(C1),对应提取第1、2、3...个匹配项的行号INDEX根据行号提取H列对应值IFERROR处理匹配项耗尽后的错误,返回空值
注意事项
- 替换公式中的
Sheet2!A:A为你实际的匹配列(比如B列就改成Sheet2!B:B) - 数据量大时,建议用具体单元格范围代替整列(如
Sheet2!A2:A1000),提升计算效率
内容的提问来源于stack exchange,提问作者Debbie Oomen
相关产品推荐
相关产品推荐

