我有一个如下的 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 来输入。