【发布时间】:2013-10-23 13:59:39
【问题描述】:
我想创建一个匹配两列的表查找公式。例如,假设我想在Type 列是Biennial 和Result 列是Warning 的行中找到Letter 列的值。
实现这一点的公式是什么样的?
【问题讨论】:
标签: database excel excel-formula lookup-tables
我想创建一个匹配两列的表查找公式。例如,假设我想在Type 列是Biennial 和Result 列是Warning 的行中找到Letter 列的值。
实现这一点的公式是什么样的?
【问题讨论】:
标签: database excel excel-formula lookup-tables
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。
请注意,这种情况当且仅当所寻求的组合是唯一的。如果所寻求的组合不止一次存在,这将失败。
【讨论】:
另一种避免数组输入的方法是:
=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))
这只是对文字的玩弄,真的。
【讨论】: