4

我想创建一个匹配两列的表查找公式。例如,假设我想Letter在该列所在的行和该列所在的行中找到该Type列的值。BiennialResultWarning

  美国广播公司
1 字母类型结果
2 A 年度超额
3 B 两年一次的警告
4 C 两年一次的发展需要
5 D 双年展 PartiallyMeets
6 E 年会

实现这一点的公式是什么样的?

4

3 回答 3

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")and过滤掉正确的行($C$2:$C$6 = "Warning");乘法运算符*用作AND运算符(+运算符将用作OR运算符)。

然后将结果乘以ROW($A$2:$A$6)找到具有组合的特定行。SUMPRODUCT() 然后将所有内容相加,在本例中为我们提供3. 由于列标题,所寻求的结果实际上位于第 2 行,因此我们减去 1。通过应用 INDEX() 函数,我们得到了所需的结果:B

但请注意,当且仅当所寻求的组合是唯一的时才会出现这种情况。如果所寻求的组合不止一次存在,这将失败。

于 2013-11-18T18:16:48.583 回答
5

另一种避免数组输入的方法是:

=INDEX($A$2:$A$6,MATCH(2,index(1/(($B$2:$B$6="Biennial")*($C$2:$C$6="Warning")),0)))

它利用了 match 函数忽略某些错误并且索引自然地管理数组的事实。

于 2013-10-24T07:33:02.813 回答
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))

真的,这只是对文字的玩弄。

于 2013-10-23T14:15:05.113 回答