我想创建一个匹配两列的表查找公式。例如,假设我想Letter
在该列所在的行和该列所在的行中找到该Type
列的值。Biennial
Result
Warning
美国广播公司 1 字母类型结果 2 A 年度超额 3 B 两年一次的警告 4 C 两年一次的发展需要 5 D 双年展 PartiallyMeets 6 E 年会
实现这一点的公式是什么样的?
我想创建一个匹配两列的表查找公式。例如,假设我想Letter
在该列所在的行和该列所在的行中找到该Type
列的值。Biennial
Result
Warning
美国广播公司 1 字母类型结果 2 A 年度超额 3 B 两年一次的警告 4 C 两年一次的发展需要 5 D 双年展 PartiallyMeets 6 E 年会
实现这一点的公式是什么样的?
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
。
但请注意,当且仅当所寻求的组合是唯一的时才会出现这种情况。如果所寻求的组合不止一次存在,这将失败。
另一种避免数组输入的方法是:
=INDEX($A$2:$A$6,MATCH(2,index(1/(($B$2:$B$6="Biennial")*($C$2:$C$6="Warning")),0)))
它利用了 match 函数忽略某些错误并且索引自然地管理数组的事实。
如果您愿意,可以使用数组公式:
=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))
真的,这只是对文字的玩弄。