Логические функции в Excel для агрегированных данных - PullRequest
0 голосов
/ 30 апреля 2019

В MS Excel я пытаюсь написать статистическую функцию, которая подсчитывает количество записей в таблице данных, которая соответствует набору требований.

Я пытался использовать AND (), OR ()операторы, но они возвращают только одно значение, даже когда я ввожу массив.

AND(1={1,1},1={1,1}) returns TRUE, instead of {TRUE, TRUE}

Я также пытался использовать * в качестве AND и + в качестве OR, но по какой-то причине это то, что я получаю.

1={1;1}*1={1;1} returns {FALSE;FALSE} when I am expecting a {TRUE;TRUE}

Однако, когда я собираю все это вместе, оно работает, за исключением случаев, когда (ИСТИНА + ИСТИНА) * ИСТИНА, оно оценивается как ЛОЖЬ, а не ИСТИНА.Это функции, которые я использую ниже, и их ожидаемые результаты.(заголовок строки 0)

count - {sum(IF( (A1:A5=1 + B1:B5=1)*C1:C5=1 , 1, 0))} = 2
sum - {sum(IF( (A1:A5=1 + B1:B5=1)*C1:C5=1 , D1:D5, 0))} = 7
min - {min(IF( (A1:A5=1 + B1:B5=1)*C1:C5=1 , D1:D5, 9999999))} = 3
max - {max(IF( (A1:A5=1 + B1:B5=1)*C1:C5=1 , D1:D5, 0))} = 4 

A   B   C   D   
1   1   1   3   
1   0   1   4   
0   0   0   5  
0   0   1   6   
1   1   0   7   

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Если наши данные похожи на:

enter image description here

Итак, мы хотим посчитать строки, в которых или A или B или оба равны 1 и C это один.

(12 желтых рядов)

Мы можем использовать:

=SUMPRODUCT(--((A1:A28)+(B1:B28)<>0)*(C1:C28))

enter image description here

0 голосов
/ 30 апреля 2019

Если вы вводите массив, тогда он возвращает массив, но вам нужно ввести массив во многих ячейках.

Например: выделите диапазон 2 в высоту и 2 в ширину.В поле формулы введите:

=(1={1,0})*(1={0;1})

и нажмите Ctrl-Shift-Enter.Вы вернете массив значений:

enter image description here

Добавляя СУММУ наружу, мы возвращаем этот массив в сумму:

=SUM((1={1,0})*(1={0;1}))

Нажмите Ctrl-Shift-Enter, и вы получите сумму массива или 1

enter image description here

Если вы хотите отобразитьмассив, нужно ввести массив по многим ячейкам, иначе на дисплее будет отображаться только верхнее левое значение массива.

...