【问题标题】:Count the number of rows that meet any criteria in some columns (OR-like operation)计算某些列中满足任何条件的行数(类似 OR 的操作)
【发布时间】:2020-10-10 19:55:41
【问题描述】:

假设我们有下表:

|  A  |  B  |  C  |  D  |
| --- | --- | --- | --- |
|  0  |  T  |  0  |  T  | (B[0] == T OR D[0] == T)
|  1  |  T  |  1  |  T  | (B[1] == T OR C[1] > 0 OR D[1] == T)
|  2  |  T  |  0  |  F  | (B[2] == T)
|  3  |  F  |  0  |  F  | (doesn't meet any criteria)
|  4  |  F  |  2  |  F  | (C[4] > 0)
|  5  |  F  | -1  |  F  | (doesn't meet any criteria)

我希望做类似COUNTORS(B:B, true, C:C, ">0", D:D, true) 的事情,返回4

也就是说,对于单行来说,如果B、C、D列中的任何一个值符合条件,那么我们应该计算它(+=1)。

【问题讨论】:

标签: if-statement google-sheets google-sheets-formula array-formulas countif


【解决方案1】:

@player0 的答案对我不起作用,所以我适应了制作一些我可以使用的东西,尽管我的答案更难看。

=SUM(ARRAYFORMULA(IF((B:B=TRUE)+(C:C>0)+(D:D=TRUE) > 1, 1, (B:B=TRUE)+(C:C>0)+(D:D=TRUE) ))) 

最明显的解决方案是在IF 语句中使用OR,但由于某种原因它不能很好地与ARRAYFORMULA 配合使用,而是直接将所有条件相加并将值设置为1,以防万一不计算同一行的多列。

【讨论】:

    【解决方案2】:

    尝试:

    =SUM(ARRAYFORMULA(IF(B:B = TRUE; 1; 0)+
                      IF(C:C > 0;    1; 0)+
                      IF(D:D = TRUE; 1; 0)))
    

    更新:

    =SUM(ARRAYFORMULA(IF((B:B=TRUE)*(C:C>0)*(D:D=TRUE), 1, 0)))
    

    OR逻辑使用:

    =SUM(ARRAYFORMULA(IF((B:B=TRUE)+(C:C>0)+(D:D=TRUE), 1, 0)))
    

    【讨论】:

    • 这并没有达到我想要的效果。我希望输出一个等于4的值。
    • 这不会返回正确的值4。相反,它会返回 7,因为有 5 个值 == T 和 2 个值 > 0。
    • 例如,如果一行中有 3 个值满足条件,则该行仍应贡献1 而不是3
    • 您上次更新的问题是(B:B=TRUE)*(C:C>0)*(D:D=TRUE) 将充当AND 语句,但用户希望将其实现为OR 我发布了一个可行的解决方案,但我'我相信你可以用你的专业知识想出一些更简洁的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2018-06-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多