Страницы: 1
RSS
Подсчет количества не повторяющихся значений по нескольким критериям.
 
Всем привет! Буду рада вашей помощи )
Имеем таблицы на разных листах. В первой таблице нужно посчитать количество значений из второй по критериям.
А именно, посчитать количество не повторяющихся ID2, которые содержат ID1 и имеют определенный Статус.
Например: ID1 = 301 со статусом "Одобрено" содержится в ID2: 101, 102. Имеем значение "2".
ID1 = 301 со статусом "Отклонено" содержится в ID2: 101. Имеем значение "1".
ID1 = 302 со статусом "Одобрено" содержится в ID2: 101, 103, 104, 105. Имеем значение "4".
Обе таблицы будут регулярно пополняться значениями. Очень нужно, что бы количество "Отклоненных" и "Одобренных" высчитывалось автоматически.
 
301 имеем 3, потому что Бог Троицу любит! Задачи любят точное решения, если их ставит президент
Код
=СЧЁТЕСЛИМН(Лист2!B:B;$A2;Лист2!C:C;$B$1)
=СЧЁТЕСЛИМН(Лист2!B:B;$A2;Лист2!C:C;$C$1)
Изменено: Тимофеев - 06.05.2021 13:48:52
 
Тимофей, большое спасибо ) Но должно получиться "2". Так как нужно именно количество НЕ повторяющихся значений в ID2. Имеем 101 две штуки и 102 одну штуку. Вот 101 повторяется и нужно его посчитать как единицу. Т.е. оригинальных значений ID2 у нас 2. Может еще идеи будут? :)
 
Цитата
Тимофеев написал:
Бог Троицу любит!
а задачи - точное решение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Код
=ОКРУГЛВВЕРХ(СУММ(ЕСЛИОШИБКА(1/СЧЁТЕСЛИМН(Лист2!$A$2:$A$10000;Лист2!$A$2:$A$10000)*(Лист2!$B$2:$B$10000=A2)*(Лист2!$C$2:$C$10000=$B$1);0));0)
=ОКРУГЛВВЕРХ(СУММ(ЕСЛИОШИБКА(1/СЧЁТЕСЛИМН(Лист2!$A$2:$A$10000;Лист2!$A$2:$A$10000)*(Лист2!$B$2:$B$10000=A2)*(Лист2!$C$2:$C$1000=$C$1);0));0)
Изменено: Тимофеев - 06.05.2021 13:47:58
 
Почти получилось  :)  Все хорошо, только не срабатывает, если я добавляют в ID2 значение меньше предыдущего. Например, если добавить в ячейку А12 значение "103", а в B12 значение "301", С12 - "Одобрено". То, к сожалению, значение не будет учтено, так и останется двоечка, а должна быть уже троечка   :*  
 
Тимофеев,
удар головой - штанга!
еще удар - снова в штангу!
вы аккуратнее - так можно голову повредить))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Дарья Адамовская, проверьте такой вариант:
Код
=СУММПРОИЗВ(--(ПОИСКПОЗ((Лист2!$B$2:$B$11=$A2)*(Лист2!$C$2:$C$11=B$1)*Лист2!$A$2:$A$11;(Лист2!$B$2:$B$11=$A2)*(Лист2!$C$2:$C$11=B$1)*Лист2!$A$2:$A$11;)=(СТРОКА(Лист2!$A$2:$A$11)-1)))-ИЛИ((Лист2!$B$2:$B$11=$A2)*(Лист2!$C$2:$C$11=B$1)=0)
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Код
=СУММПРОИЗВ(--(МУМНОЖ((ИД2=ТРАНСП(ИД2))*(СТРОКА(ИД2)>=ТРАНСП(СТРОКА(ИД2)))*(ИД1=Лист1!$A2)*(Лист1!B$1=Стс);(ИД1=Лист1!$A2)*(Лист1!B$1=Стс))=1))

где ИД1, ИД2, Стс - соотв. диапазоны листа2
Изменено: Ігор Гончаренко - 06.05.2021 15:27:52
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Максим В., Тимофеев,  ребята, спасибо! Все получилось  :)  :*  ;)  
 
Голова уже давно повреждена, но в любом случае лучше бить чем не бить
Код
=СУММ(ЕСЛИ(ЕСЛИОШИБКА(1/СЧЁТЕСЛИМН(Лист2!$A$2:$A$1000;Лист2!$A$2:$A$1000);0)<1;ЕСЛИОШИБКА(1/СЧЁТЕСЛИМН(Лист2!$A$2:$A$1000;Лист2!$A$2:$A$1000);0);1*(A2&$B$1=Лист2!$B$2:$B$1000&Лист2!$C$2:$C$1000)))
=СУММ(ЕСЛИ(ЕСЛИОШИБКА(1/СЧЁТЕСЛИМН(Лист2!$A$2:$A$1000;Лист2!$A$2:$A$1000);0)<0;ЕСЛИОШИБКА(1/СЧЁТЕСЛИМН(Лист2!$A$2:$A$1000;Лист2!$A$2:$A$1000);0);1*(A2&$C$1=Лист2!$B$2:$B$1000&Лист2!$C$2:$C$1000)))
Изменено: Тимофеев - 06.05.2021 20:32:11
Страницы: 1
Наверх