Подсчитайте количество строк, соответствующих любому критерию в некоторых столбцах (операция типа ИЛИ) - PullRequest
0 голосов
/ 20 июня 2020

Допустим, у нас есть следующая таблица:

|  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).

Ответы [ 2 ]

0 голосов
/ 22 июня 2020
Ответ

@ player0 у меня не сработал, поэтому я адаптировался, чтобы сделать что-то, что я мог бы использовать, хотя мой ответ намного уродливее.

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

Наиболее очевидным решением было использование OR внутри оператора IF, но по какой-то причине он не работал с ARRAYFORMULA, вместо этого я напрямую суммировал все условия и установил значение 1 на случай, если оно было выше, чтобы не подсчитывать несколько столбцов для одной и той же строки.

Конечный результат

0 голосов
/ 20 июня 2020

попробуйте:

=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 logi c используйте:

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