#excel #excel-formula
Вопрос:
У меня есть некоторые данные, которые выглядят примерно так:
Алиса | Боб | Карла | Дейв | |
---|---|---|---|---|
Роль | Роль 1 | Роль 1 | Роль 2 | *Роль 2( |
Янв. | Деятельность 1 | Деятельность 2 | Деятельность 3 | Деятельность 1 |
Февраль | Деятельность 2 | Деятельность 1 | Деятельность 1 | Деятельность 3 |
Мар | Деятельность 1 | Деятельность 3 | Деятельность 2 | Деятельность 2 |
Я хочу подсчитать, сколько раз кто-то Role1
делает Activity1
Я могу использовать Filter
, чтобы получить соответствующий массив, и я могу использовать COUNTIF
фильтр для значения в диапазоне, но, похоже, COUNTIF
поддерживает только диапазоны, а не массивы
Я также знаю, что вы могли бы сделать что-то подобное =COUNT(IF(FILTER($B:$Z, $B2:$Z2="Role1")="Activity1", 1, ""))
, но это дает мне ошибки «в Excel закончились ресурсы» даже для небольших диапазонов
Есть ли эквивалент COUNTIF
, который работает с массивами, или какой-то другой способ их объединения?
Я подозреваю, что меня заставят использовать макрос, но это кажется излишним
Комментарии:
1. Вы рассматривали графы()
2. Да, к сожалению, я тоже не могу приступить
countifs
к работе. Я подозреваю, что есть способ использовать его сindex
илиmatch
, но я не могу заставить это работать3. Не за компьютером, но
SUMPRODUCT()
, вероятно, будет работать.
Ответ №1:
Я думаю, что вам не нужен VBA. Sumproduct должен работать на вас. Я пишу со своего мобильного телефона. Попробуйте приведенную ниже формулу в соответствии со снимком экрана.
=SUMPRODUCT((B1:E1="Role1")*(B2:E4="Activity1"))
Комментарии:
1. Ладно, твой намного короче!
2. Смотрите мое «решение» (скорее «упс»), не уверенное в этикете. Я действительно начал
sumproduct
работать (используя только одинfilter
), но я не пробовал этот еще более простой подход
Ответ №2:
Попробуйте это: =SUMPRODUCT(--(FILTER(FILTER(A:Z,A$2:Z$2="Role1"),(A:A<>"")*(A:A<>"Role"))="Activity1"))
он фильтрует данные, чтобы показывать только столбцы с Role1
, а затем фильтрует их, чтобы потерять пустые данные и заголовок (даже если это не было бы необходимо для результата). Затем Sumproduct проверяет количество вхождений « Activity1
в оставшихся.
Комментарии:
1. Смотрите мое «решение» (скорее «упс»), не уверенное в этикете. Я действительно начал
sumproduct
работать, но мне удалось сделать это только с однимfilter
)2. Я объяснил, что второй фильтр не нужен, но я думаю, что, хотя вы сами разобрались со своей проблемой, Гарун заслуживает похвалы за свой ответ.
Ответ №3:
Пара человек предложили SUMPRODUCT
, что может сработать. Оказывается, мой первоначальный вопрос также предлагает решение, которое может сработать: замена countif(filter(...))
на count(if(filter(...)))
Я попробовал оба из них, прежде чем опубликовать этот вопрос, но ни один из них не сработал для меня.
Почему?
Оказывается, я задал неправильный вопрос. Ошибка «У Excel закончились ресурсы», которую я получал, заключалась в том, что я сделал предположение, что Excel был умнее, чем он есть. Используя диапазон, подобный $B:$ZZ
тому, который я предполагал, что Excel автоматически усечет фактически используемые ячейки. Похоже, это не так. Когда я изменил свой диапазон на $B3:$Z30
«затем», ошибки в памяти исчезли, и оба решения начали работать
Я не уверен, что здесь соблюдается этикет. Отмечаю ли я это как решение, отмечаю ли ответ P. b. или Harun24HR как решение или каким-то образом отмечаю вопрос как недействительный?