Sumproduct с несколькими критериями в одном диапазоне - PullRequest
0 голосов
/ 05 октября 2018

В наборе данных у меня есть ответы, которые дали участники опроса.Ответы в одном примере пронумерованы от 1 до 5, где 1 - «да», а 2–5 - «нет».

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

Теперь наилучшим способом получения такого набора данных обычно является использование сводной таблицы, однако способ настройки данных не работает с сводной таблицей.и из-за большого размера ремоделирование набора данных неэффективно.

Чтобы извлечь количество людей в определенной подгруппе, которые ответили "да" на вопросы в определенном классе, я использую следующую функцию:

=SuMPRODUCT(--(Test!D$4:$CC$1824=1)*(Test!$C$4:$C$1824=$C3)*(Test!$D$3:$CC$3=D$2))

, в котором Test!D$4:$CC$1824 - это диапазон, в котором даются ответы, а два других - это диапазоны для подгруппы и классов соответственно.

Используя --(Test!D$4:$CC$1824=1), я преобразую все данные в 0, кромегде участники ответили «да» (значение ячейки = 1).

Теперь я хотел бы сделать то же самое для ответа «нет», поэтому значение равно либо 2, либо 3, либо 4, либо 5. Идеальным способом было быдобавить некоторую логику ИЛИ в первый тест, примерно так: --(Test!D$4:$CC$1824={2,3,4,5})

Конечно, это не работает, но есть ли какие-нибудь простые обозначения, кроме retyping первая часть 4 раза и сложение их вместе?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Операцию ИЛИ можно имитировать, сложив все возможности вместе.

=SuMPRODUCT(((Test!D$4:$CC$1824=2)+(Test!D$4:$CC$1824=3)+(Test!D$4:$CC$1824=4)+(Test!D$4:$CC$1824=5))*
            (Test!$C$4:$C$1824=$C3)*(Test!$D$3:$CC$3=D$2))

Если есть вероятность, что две из них могут быть правильными (в данном случае нет), оберните сумму вФункция SIGN, чтобы получить только ноль или единицу.

=SuMPRODUCT(SIGN((Test!D$4:$CC$1824=2)+(Test!D$4:$CC$1824=3)+(Test!D$4:$CC$1824=4)+(Test!D$4:$CC$1824=5))*
            (Test!$C$4:$C$1824=$C3)*(Test!$D$3:$CC$3=D$2))
0 голосов
/ 05 октября 2018

Я бы сказал, что вы могли бы просто использовать >1 вместо =1

. Для выбранных результатов, таких как 1 и 3 и 5, вам, вероятно, нужно прибавить sumproducts каждого числа.

Sidenote: -- больше не нужен, поскольку он предназначен только для преобразования true и false в 1 и 0, когда внутри sumproduct

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