Excel表查找匹配两列的值

时间:2013-10-23 13:59:40

标签: database excel excel-formula lookup-tables

我想创建一个匹配两列的表查找公式。例如,假设我想在Letter列为TypeBiennial列为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

完成此任务的公式是什么样的?

3 个答案:

答案 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))

这只是文本上的一个剧本,真的。