用条件计数行,而不是多次计算同一行

所以我正在计算有多less行包含5个值中的至less一个的值“X”,然后排除任何包含2个不同列中相同的值的行,但我不知道我的function正在做我认为的事情。

所以基本上这样:“获取列A,B,C,D,E中至less一列中包含”X“的所有行,然后排除列F中的值等于列G中的值的任何行”

这是我的,但我不认为这是正确的,我得到的数字似乎非常低:

=SUMPRODUCT((A1:A100="X")*(B1:B100="X")*(C1:C100="X")*(D1:D100="X")*(E1:E100="X")*(F1:F100<>G1:G100)) 

这将做到这一点:

 =SUMPRODUCT((0<(A1:A100="x")+(B1:B100="x")+(C1:C100="x")+(D1:D100="x")+(E1:E100="x"))*(F1:F100<>G1:G100)) 

这个简单的计算没有必要使用任何辅助单元。

对于这样的组合条件,最好预留几列以获得部分结果(稍后可以隐藏)。 这是渐进式制造更容易,而能够检查部分结果是正确的。

所以把H1中的公式计算在A1:E1中的X的数量

 =COUNTIF(A1:E1; "X") 

将该公式进一步复制到H列。 然后在I1中,对F1 <> G1进行testing

 =IF(F1<>G1; 1; 0) 

将该公式向下复制到I列中。 然后在J1中查看是否应该根据这两个部分结果来计算行:

 =IF(H1*I1=0; 0; 1) 

将该公式向下复制到J列。 现在你的最终结果是

 =SUM(J1:J10000) 

当然,你可以在一个公式中做所有的事情,但是debugging起来要困难得多。 以上述方式,您可以轻松地发现中间结果中的错误。 一旦您对结果满意,您只需隐藏中间计算列。

H1中input:

 =IF(AND(COUNTIF(A1:E1,"X")>0,F1<>G1),1,0) 

并复制到H100

那么你需要的是:

 =SUM(H1:H100)