Формула Excel - 2 счетчик один в другой? - PullRequest
0 голосов
/ 28 сентября 2018

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

Я ищу способ сделать следующее с формулой Excel подсчитать, сколько строк соответствует критерию.Звучит, может быть, легко, но до сих пор я не справился с этим, возможно потому, что я не сделал это правильно.

У меня есть стол такого типа (здесь домашние животные, но также работают с любым "объектом"«Массив, как у работника и их эффективность»

        01.10.2018          02.10.2018              03.10.2018      
        Menu        Wg  Sz  Menu        Wg  Sz  Menu        Wg  Sz
Lassie  Dry food    23  65  Dry food    22  65  Dry food    23  65
Fusel   Meat fodder 12  49  Dry food    14  49  Fish fodder 13  49
Bobo    Fish fodder 33  86  Meat fodder 32  86  Meat fodder 34  86

Я задаю себе такие вопросы: Сколько домашних животных съели рыбный корм?Сколько домашних животных меньше 50 см?

Я могу легко сделать это на уровне строк, а затем добавить ячейку суммы (скажем, в столбце A):

COUNTIF(3:3,"Fish fodder")
COUNTIF(4:4,"Fish fodder")
COUNTIF(5:5,"Fish fodder")
COUNTIF(A:A,">0")

Но я ищуспособ сделать это в формуле для отдельной ячейки.

Я думал использовать способ crtl + shift + enter, но затем мне также нужно сделать это в каждом ряду дополнительную ячейку, чтобы иметь возможность накапливатьрезультаты.

Я надеюсь, что кто-то может помочь.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вы можете сделать это с помощью простых формул массива, их нужно будет настраивать отдельно для каждого вопроса.Вот несколько примеров:

Конкретное имя, дата и питание:

enter image description here

ПищаВведите по дате:

enter image description here

Они используют умножение массива, в основном вы получаете массив из 1 и 0 и просто суммируете их.

Это формулы массивов, которые должны быть подтверждены Ctrl+Shift+Enter

0 голосов
/ 28 сентября 2018

В соответствии с формулой COUNTIF, которую вы дали, я думаю, это то, что вам нужно.

enter image description here

B9 =SUMPRODUCT(--(MMULT(--($B$3:$J$5=$A9),TRANSPOSE(COLUMN($B$3:$J$3)))>0))
B10 =SUMPRODUCT(--(MMULT(--($B$3:$J$5=$A10),TRANSPOSE(COLUMN($B$3:$J$3)))>0))
B11 =SUMPRODUCT(--(MMULT(--(($B$3:$J$5<50)*(($B$2:$J$2)="Sz")),TRANSPOSE(COLUMN($B$3:$J$3)))>0))

Все формулы здесь Формула массива , поэтому, пожалуйста, нажмите Ctrl + Shift + Enter , чтобы завершить их.

Хитрость в матрице [n x m]*[m x 1] = [n x 1].Однако в Excel матрица * матрица напрямую не является умножением матрицы [# 1].Массив * массив возвращает массив с a11*b11, a12*b12, a13*b13 и так далее.Мы должны использовать формулу под названием MMULT для умножения матриц.

Поэтому мы сначала строим матрицу [3 x 9] и затем сравниваем ее с критериями "Dry food".Мы получаем [3 x 9] матрицу, полную True или False, поэтому мы добавляем двойной знак минус перед матрицей, заставляя их становиться 1 и 0.

. TRANSPOSE предназначен длягенерируя матрицу [9 x 1], значение на самом деле не так важно, если они больше 0. На самом деле мы можем использовать ROW(1:9), и эффект будет таким же.Однако не все знают, как настроить эталон в ROW().Преимущество TRANSPOSE(COLUMN()) состоит в том, что внутренняя ссылка точно такая же, как и область исходных данных.

После выполнения MMULT результат становится матрицей [3 x 1].И если он соответствует критериям, значение больше 0, остальные будут равны 0. Таким образом, следующая часть проверяет все элементы в стороне матрицы на >0 или нет.И затем мы снова добавляем двойной знак минус для преобразования логического значения в 0 и 1.Последняя часть здесь просто суммирует их на SUMPRODUCT.

[# 1] Подробнее о умножении матриц здесь: https://en.wikipedia.org/wiki/Matrix_multiplication

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