如何在Google Sheets中获取多列索引并解决重复列匹配问题?
问题分析
你的公式中MATCH函数默认仅返回第一个匹配到的John列索引,导致只能筛选出该列对应的BMW,无法识别第二个John列中的Nissan。
解决方案
方法1:支持动态数组与LAMBDA函数的Excel版本(如365/2021)
使用BYROW结合OR函数,遍历每一行并检查所有列标题为目标名字的单元格是否存在"x",公式如下:
=IFERROR(FILTER(P4:P7, BYROW(Q4:T7, LAMBDA(row, OR((Q3:T3=L9)*(row="x"))))), "")
公式拆解:
Q3:T3=L9:生成布尔数组,标记哪些列的标题等于指定名字(如John)row="x":对当前行,标记哪些单元格为"x"(Q3:T3=L9)*(row="x"):相乘后得到当前行中列标题为目标名字且单元格为x的位置(1表示符合,0表示不符合)OR(...):判断当前行是否存在至少一个符合条件的单元格,返回TRUE/FALSEBYROW(..., LAMBDA(row, ...)):对数据区域的每一行执行上述判断,生成筛选条件数组FILTER(P4:P7, ...):根据条件返回对应的cars列表IFERROR(..., ""):无匹配结果时返回空值
方法2:旧版Excel(不支持LAMBDA)
使用数组公式(输入时按Ctrl+Shift+Enter确认),下拉公式直到出现空值即可获取所有匹配项:
=IFERROR(INDEX(P4:P7, SMALL(IF((Q3:T3=L9)*(Q4:T7="x"), ROW(Q4:T7)-ROW(Q4)+1), ROWS($A$1:A1))), "")
内容的提问来源于stack exchange,提问作者Robinson
相关产品推荐
相关产品推荐

