关闭上一篇文章: Excel match two columns and output third
我在A列中的值不是唯一的,B列中的值不是唯一的,但A列和B列一起产生了唯一的组合:
A B C
1 Red Car Result#1
2 Blue Boat Result #2
3 Red Boat Result #3
4 Green Car Result #4
假设我想要找到一个匹配,其中A列=红色,B列=船,应返回C列中应该为结果#3的相应值。
使用上一篇文章的解决方案:
=IF(MATCH("Red",A1:A4,0)=MATCH("Boat",B1:B4,0),INDEX(C1:C4,MATCH("Boat",B1:B4,0)),0)
这实际上会返回值B列中第一个匹配的值,即结果#2而不是匹配为真的预期结果#3。
有关如何修改或编写一个函数的想法,该函数将指定检索与匹配为真的特定位置相关的信息(不使用VBA)?
我已经想过通过创建另一个将Col A和B组合成一个唯一标识符的列来解决这个问题,但我希望避免这种情况。
谢谢!真的很感激,并对表格式感到抱歉。我还是很陌生。
答案 0 :(得分:1)
您可以使用AGGREGATE function检索两列匹配,以强制任何不匹配的错误并忽略错误。
E6中的公式是,
=IFERROR(INDEX(C$1:C$99,AGGREGATE(15,6,ROW($1:$99)/((A$1:A$99="red")*(B$1:B$99="boat")), ROW(1:1))), "")
您实际上正在使用AGGREGATE函数的SMALL子函数,因此您可以通过增加 k 参数来获得第二次,第三次等连续匹配。我通过使用等于1的ROW(1:1)
完成了上述操作,但随着公式的填充,将增加到2,3等。
答案 1 :(得分:0)
创建第三列是最有效的解决方案。但是,如果你必须避免它,你可以使用这样一个复杂的公式:
=INDEX($C$1:$C$6,MATCH(A11,$A$1:$A$6,0) + MATCH(B11,OFFSET($A$1,MATCH(A11,$A$1:$A$6,0)-1,1,COUNTA($A$1:$A$6)-MATCH(A11,$A$1:$A$6,0),1),0)-1)
但条件是查找表按列1和列2排序。