如何从大数据集中返回多条员工培训记录?VLOOKUP仅返回单条
按用户ID提取所有培训记录的解决方案
VLOOKUP确实只能返回首个匹配的记录,用INDEX+MATCH实现多结果提取是可行的,搭配IFERROR还能处理无匹配的情况,下面分两种场景给你具体方法:
新版Excel(支持动态数组,比如Office 365/2021)
直接用FILTER函数一步搞定,简单高效。假设你的用户ID列是A列,培训记录列是B列,要搜索的目标ID放在D1单元格,公式如下:
=FILTER(B:B,A:A=D1,"无匹配记录")
这个公式会自动筛选出所有A列等于D1的培训记录,要是没找到匹配项,就显示"无匹配记录"。
旧版Excel(不支持动态数组)
得用INDEX+SMALL+IF+ROW的组合数组公式,再套IFERROR避免错误提示。在结果区域的第一个单元格(比如E2)输入公式后,按Ctrl+Shift+Enter确认(旧版数组公式必须这么操作),然后下拉填充:
=IFERROR(INDEX(B:B,SMALL(IF(A:A=$D$1,ROW(A:A)),ROW(A1))),"")
拆解下逻辑:
IF(A:A=$D$1,ROW(A:A)):找出所有用户ID匹配的行号SMALL(...,ROW(A1)):依次提取第1、2、3...个匹配的行号,下拉时ROW(A1)会变成ROW(A2)、ROW(A3),实现逐个提取INDEX(B:B,...):根据行号取出对应的培训记录IFERROR(..., ""):当没有更多匹配记录时,显示空单元格,不会出现#NUM!错误
另外提一句:单独的INDEX+MATCH和VLOOKUP一样只会返回第一条匹配,必须配合SMALL这类函数遍历所有匹配行,才能实现多结果提取。
内容的提问来源于stack exchange,提问作者Carl Stevens
相关产品推荐
相关产品推荐

