Excel技术求助:按Lookup表批量提取Entry表匹配代码的多实例
解决方案:批量返回多匹配实例结果
针对Excel 365/2021(支持动态数组)
直接在单元格I24输入以下公式,公式会自动溢出填充所有匹配结果:
=TOCOL(FILTER(Entry表的Nominal Code列区域, ISNUMBER(MATCH(Entry表的Nominal Code列区域, Lookup表的代码区域, 0))), 2)
替换说明:
Entry表的Nominal Code列区域:替换为你实际的Entry Table中Nominal Code所在的单元格范围(比如A3:A20)Lookup表的代码区域:替换为Lookup table中代码列表所在的单元格范围(比如I4:I18)
针对旧版Excel(不支持动态数组)
在单元格I24输入以下公式,按Ctrl+Shift+Enter确认数组公式,然后下拉填充至I44:
=INDEX(A3:A20, SMALL(IF(ISNUMBER(MATCH(A3:A20, I4:I18, 0)), ROW(A3:A20)-ROW(A3)+1), ROW(A1)))
公式逻辑:
MATCH(A3:A20, I4:I18, 0):检查Entry表的每个Nominal Code是否存在于Lookup表中ISNUMBER(...):将匹配成功的结果转为TRUE,失败转为FALSEIF(...):仅保留匹配成功的单元格行号偏移量(相对于A3的行号)SMALL(..., ROW(A1)):依次提取第1、2、3...个匹配的行号偏移量INDEX(...):根据偏移量返回对应的Nominal Code
你现有公式的问题
你当前使用的=INDEX(A3:A20,MATCH(I4:I18,I4:I18,0),0)仅能返回Lookup表中每个代码自身第一次出现的位置,没有关联Entry表的匹配逻辑,因此无法批量获取跨表的多实例匹配结果。
内容的提问来源于stack exchange,提问作者Dan Drury
相关产品推荐
相关产品推荐

