我想创建一个匹配两列的表查找公式。例如,假设我想在Letter
列为Type
且Biennial
列为Result
的行中找到Warning
列的值}。
A B C 1 Letter Type Result 2 A Annual Exceeds 3 B Biennial Warning 4 C Biennial DevelopmentNeeded 5 D Biennial PartiallyMeets 6 E Annual Meets
完成此任务的公式是什么样的?
答案 0 :(得分:7)
SUMPRODUCT()公式非常适合您想要使用多个条件查找值的情况。想要查找数值时最方便,但也可以调整它以查找字符串值。作为奖励,您可以避免使用数组公式。
可以使用以下公式解决此特定问题(为了易读性添加了缩进,您可以使用ALT + ENTER在Excel公式中执行此操作):
=INDEX(
$A$2:$A$6,
SUMPRODUCT(
($B$2:$B$6 = "Biennial") *
($C$2:$C$6 = "Warning") *
ROW($A$2:$A$6)
) - 1
)
首先,SUMPRODUCT()用于使用($B$2:$B$6 = "Biennial")
和($C$2:$C$6 = "Warning")
过滤掉正确的行;乘法运算符*
用作AND
运算符(+
运算符将充当OR
运算符)。
然后将结果乘以ROW($A$2:$A$6)
以找到具有该组合的特定行。 SUMPRODUCT()然后添加所有内容,在这种情况下,我们3
。由于列标题,所寻求的结果实际上在第2行,我们减去1.通过应用INDEX()函数,我们得到了所需的结果:B
。
请注意,情况当且仅当所寻求的组合是唯一的。如果所寻求的组合不止一次存在,这将会崩溃。
答案 1 :(得分:5)
避免数组输入的另一种方法是:
=INDEX($A$2:$A$6,MATCH(2,index(1/(($B$2:$B$6="Biennial")*($C$2:$C$6="Warning")),0)))
它利用了匹配函数忽略某些错误并且索引自然地管理数组这一事实。
答案 2 :(得分:3)
如果您愿意,可以使用数组公式:
=INDEX($A$2:$A$6,MATCH(1,($B$2:$B$6="Biennial")*($C$2:$C$6="Warning"),0))
使用Ctrl + Shift + Enter
输入如果你想在没有数组公式的情况下这样做,你可以通过创建一个辅助列来实现。
D列有公式:
=B2&C2
复制
然后新的公式可能是:
=INDEX($A$2:$A$6,MATCH("BiennialWarning",$D$2:$D$6,0))
这只是文本上的一个剧本,真的。