我知道如何找到符合所有 3 个条件的单元格:
{=INDEX(E5:E11,MATCH(1,(H5=B5:B11)*(H6=C5:C11)*(H7=D5:D11),0))}
或者查找符合以下 3 个条件之一的单元格:
{=INDEX(E5:E11,MATCH(1,(H5=B5:B11)+(H6=C5:C11)+(H7=D5:D11),0))}
但是我如何让它返回符合 2 个或更多条件的值 - 即不一定是所有条件,而是多个条件?
如果有效的话,我不反对使用与 Index & Match 不同的函数。不过,我更喜欢公式而不是 VBA。我正在使用 Excel 2019。
我的数据集有多条记录,满足任意 3 条标准中的两条或更多条。我意识到 Index & Match 只会返回第一条,这对于此目的来说没问题。
答案1
您可以为此使用INDEX
/数组函数。实际上,您的第二个公式已经很接近了 - 您只需要添加一个条件:MATCH
>=2
=INDEX($A$2:$A$6;MATCH(TRUE;(($B$2:$B$6=$G$2)+($C$2:$C$6=$G$3)+($D$2:$D$6=$G$4))>=2;0))
要了解该公式的工作原理,您可以看看这个“虚数”数组:
True
Excel 将为您的每个条件添加三个带有/ 的数组False
,然后将它们相加。然后我们比较结果 - 如果结果是 2 或更大,则为 True,然后我们可以使用该MATCH
函数找到行号。
正如您所知,此功能只显示第一个结果。根据您的 Excel 版本,您可能需要使用Ctrl+ Shift+输入公式Enter。