这是关于如何根据多个条件计算矩阵中的条目的一系列问题的第三部分也是最后一部分,只有其中一些条件需要为真才能符合条件(Part 1),以及在处理非顺序列时( Part 2)。
您可以在当前环境之外应用一些创造性的解决方案,并在此过程中建立一些奇妙的友情。
最后一步就是这个。取以下矩阵:
A B C D E F G H
4 2 2 2 1 4 2 4
5 2 1 3 4 1
3 2 1 1 1 3
1 2 3 5 3 2 2 2
3 3 1 2 2 2 2 2
目标是计算满足以下条件的行数:
当前矩阵的答案是 2,因为第 3 行和第 5 行都具有相关列(A:C 和 F:G)的完整数据,并且它们至少满足 A:C 列的标准之一(例如,A3 (3) 和 C3 (1) 在第 3 行,A5 (3)、B5 (3) 和 C5 (1) 在第 5 行) 和 不符合 F:G 列的任何标准。
我强烈建议查看 XOR LX's creative approach到问题(只有一组标准和顺序列),以及 Tom Sharpe's excellent progression (对于非顺序列,但仍然是一组标准),尤其是因为您可以保证从他们的独创性中学到一些东西。
我将更新问题标题名称以反射(reflect)每种情况下的最佳解决方案。
非常感谢,让游戏开始吧!
最佳答案
这一次,您有复杂的条件,不能像以前那样将其分解到计数中,并且必须逐行评估。我建议常识最终必须占上风,而不是一个宏伟的数组公式,我会提出三个辅助列:
(1) 检查前三列是否为非空白(在第一列):
=COUNTIFS(A1,"<>",B1,"<>",C1,"<>")
(2)检查前三列是否满足所有逆标准(在col J中):
=COUNTIFS(A1,"<=2",B1,"<=2",C1,">=2")
(3) 检查最后三列是否也满足所有逆标准(在 col K 中):
=COUNTIFS(F1,"<=2",G1,"<=2",H1,">=2")
我们想要的结果是 (1) 为真、(2) 为假且 (3) 为真的行(在 col M 中):
=SUMPRODUCT(I1:I5,1-J1:J5,K1:K5)
这是用于比较的传统数组公式方法:
=SUMPRODUCT((A1:A5<>"")*(B1:B5<>"")*(C1:C5<>"")*(F1:F5<>"")*(G1:G5<>"")*(H1:H5<>"")*SIGN((A1:A5>2)+(B1:B5>2)+(C1:C5<2))*(F1:F5<=2)*(G1:G5<=2)*(H1:H5>=2))
(这里我们必须测试每一列都是非空白的,因为空白被视为零并且会错误地满足某些标准。异常(exception)是列 H,因为我们已经检查它是否 >= 2,因此可以省略) .
在可能的情况下使用 Countifs 可能有一些优势,因为您可以在测试标准的同时排除空白。至少对于最后三列是正确的,但对于前三列则不然,结果为零可能意味着并非所有逆标准都得到满足(因此至少有一个原始标准),或者存在这些列中的空白。
关于arrays - 如何在只有某些条件需要为 TRUE 的数组公式中包含 OR - Excel 第 3 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53505985/