如何检查某一行是否满足多个条件?(Excel)

如何检查某一行是否满足多个条件?(Excel)

我有一个如下的 Excel 文件:

Excel 屏幕截图

我有一个属于两个类别(优先级 1 和优先级 2)的指标列表。然后我有一个包含一些指标的报告列表(行)。

我如何检查哪些行(“报告”)的两个都优先级 1 和优先级 2?

例如:报告 A 包含指标 A 和指标 C。指标 A 的优先级为 1,而指标 C 的优先级为 2。因此,报告 A 满足条件。

另一方面,报告 D 具有指标 A 和指标 B。指标 A 和 B 都属于优先级 1。由于报告 D 没有属于优先级 2 的指标,因此报告 D 不满足条件。

我有超过 700 份报告和 30 个指标需要检查,但我相信我仍然应该能够使用 Excel 公式来完成这些工作,但我愿意通过其他方法(Python 等)来完成这些工作。

答案1

使用 SUMPRODUCTS “计算”TRUE报告中和YES指标中的数量(每个指标一个)。然后将两个检查相乘。

=(SUMPRODUCT(B5:E5*($B$2:$E$2="YES"))>0)*(SUMPRODUCT(B5:E5*($B$3:$E$3="YES"))>0)>0

在此处输入图片描述


另一个选项不需要使用 30 个 SUMPRODUCTS(每个指标一个)

我们可以使用 MMULT 和 MATCH 来确保每个指标都得到使用:

=AND(ISNUMBER(MATCH(ROW($B$2:$E$3),MMULT(TRANSPOSE(($B$2:$E$3="YES")*B5:E5),ROW($B$2:$E$3)),0)))

MMULT 基本上会创建一个垂直数组,其中包含指标的行号,其中指标为YES,报告为TRUE。然后 MATCH 滚动浏览指标的每一行,并查看返回的数组中是否存在该行号。使用 AND 时,指标的所有行号都必须在数组中才能返回响应TRUE

根据 One 的版本,退出编辑模式时可能需要使用 ctrl-shift-enter 而不是 Enter 来输入。

![在此处输入图片描述

相关内容