Страницы: 1
RSS
Посчитать количество строк по условиям 4-х столбцов
 
Нужна помощь! Если честно, долго думал даже просто над тем, как сформулировать название темы.
Суть вот в чём. Есть, скажем, четыре колонки. В первой - год, во второй - какое-нибудь наименование (в нашем случае - цвет), в третьей - тоже, в четвёртой - целое число.
Изначально задача кажется предельно простой. Нужно посчитать количество "White" во колонке 2, при положительном значении чисел в колонке 4 в тех же строчках. И вот тут появляется условие, с выполнением которого у меня возникает сложность. Количество "White" во колонке 2 при положительном значении числа в колонке 4 считается НЕ ДЛЯ ВСЕХ лет (колонка 1), а только для тех, в которых в колонках 2 или 3 (хотя может быть и в обеих) встречается, скажем, слово "Yellow".
Помогите, пожалуйста! Файл прилагается
Изменено: vikttur - 21.09.2021 00:01:45
 
Наверное можно попробовать так:

=СУММПРОИЗВ(((B1:B22="white")*(D1:D22=2))*((B1:B22="yellow")+(C1:C22="yellow")))
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 

Спасибо большое, но пока что-то не то. В моём примере “Yellow” встречается в колонках 2 и/или 3 во всех годах, кроме 2012 и 2013. Соответственно, нужно посчитать количество “White” в колонке 2 только для этих годов (без 2012 и 2013), и при этом в колонке 4 должно быть положительное число. Таких случаев всего два – в 8-й и 13-й строке. То есть ответ должен быть 2, а вышел почему-то 1. И у Вас в примере в формуле почему-то вообще нет ссылки на колонку 1…

 
Цитата
Cruyff14 написал:
у Вас в примере в формуле почему-то вообще нет ссылки на колонку 1
а почему должна? У Вас ведь нет условия на просмотр номера года. Вы ведь сами написали:
Цитата
Cruyff14 написал:
только для тех, в которых в колонках 2 или 3 (хотя может быть и в обеих) встречается, скажем, слово "Yellow".
только вот условие сформулировано не очень понятно, с какими-то пояснительными изысками. У Вас условия озвучены вперемешку с результатами Ваших неудачных попыток.
Вот Вы пишите:
Цитата
Cruyff14 написал:
В моём примере “Yellow” встречается в колонках 2 и/или 3 во всех годах, кроме 2012 и 2013. Соответственно, нужно посчитать количество “White” в колонке 2 только для этих годов
Вот как это понять? не может быть так, чтобы в одной ячейке было и White и Yellow. Да и упоминание про года совершенно излишне, т.к. они никак не участвуют в условиях задачи. Если Вам надо подсчитать все связки White+Yellow, независимо от того, в каком столбце каждое из них расположено и при этом с числами больше 0, то можно применить такую функцию:
Код
=СУММПРОИЗВ(((B1:B22="Yellow")*(C1:C22="White"))+((B1:B22="White")*(C1:C22="Yellow"))*(D1:D22>0))
Но даже в этом случае таких строк 3, а не две: строка 8, 12 и 21.
Либо надо искать Yellow в любом столбце, а White всегда во втором, но тогда условие просмотра Yellow во втором столбце избыточно, т.к. не может быть и Yellow и White в одной и той же ячейке. Следовательно надо всегда искать Yellow в третьем столбце а White всегда во втором. И формула более чем простая:
Код
=СУММПРОИЗВ(((B1:B22="Yellow")*(C1:C22="White"))*(D1:D22>0))
Но и здесь все не сходится, потому что:
Цитата
Cruyff14 написал:
нужно посчитать количество “White” в колонке 2 только для этих годов
А вместе с остальными условиями такая строка только одна: строка 8.
Однако Вы пишите:
Цитата
Cruyff14 написал:
Таких случаев всего два – в 8-й и 13-й строке
в 13-ой строке в столбце С - Red. Так каковы реальные условия задачи?
Изменено: Дмитрий(The_Prist) Щербаков - 21.09.2021 11:34:43
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Простите, пожалуйста, если я не очень понятно обрисовал условия задачи. Нужно подсчитать количество надписей "White" в колонке 2, при условии, что в колонке 4 ТЕХ ЖЕ строк находится положительное число, и ТОЛЬКО ДЛЯ ТЕХ ЛЕТ (колонка 1), в которых (в колонке 2 или колонке 3, хотя может быть и в той и в другой), встречается надпись "Yellow".
Или - если проще - у нас есть первое условие, "Yellow". Мы смотрим, в каких годах эта надпись встречается в любой из двух колонок (2 или 3). И потом ТОЛЬКО ДЛЯ ТЕХ лет, мы считаем количество "White" в колонке 1 (только 1, не 2!) при положительных значениях чисел в последней колонке тех же строк. Уф. Надеюсь, так понятнее..
 
слов, кроме матных, не нашел для выражения ответа. Я не пойму, что за винегрет Вы нам тут устроили? Давайте по шагам разберем Ваше ТЗ:
Цитата
Cruyff14 написал:
подсчитать количество надписей "White" в колонке 2
Цитата
Cruyff14 написал:
мы считаем количество "White" в колонке 1 (только 1, не 2!)
так где Вы чего считате-то?
Цитата
Cruyff14 написал:
в колонке 2 или колонке 3, хотя может быть и в той и в другой), встречается надпись "Yellow".
Это как? Вы покажите на примере, как у Вас в одной и той же ячейке может быть и Yellow и White? Просто ПОКАЖИТЕ. В приложенном примере это НЕВОЗМОЖНО.
Цитата
Cruyff14 написал:
Надеюсь, так понятнее
ни разу. Вы мои формулы смотрели? Пояснения читали? Чем моя последняя формула не подходит под условие:
Цитата
Cruyff14 написал:
есть первое условие, "Yellow". Мы смотрим, в каких годах эта надпись встречается в любой из двух колонок (2 или 3). И потом ТОЛЬКО ДЛЯ ТЕХ лет, мы считаем количество "White" в колонке 1 (только 1, не 2!) при положительных значениях чисел в последней колонке тех же строк
за исключением того, что White там ищется во втором столбце(а не в 1-м, т.к. в 1-м годы) и как итог, там только одно совпадение.

Вы попробовали сами руками подсчитать то, что написали нам?
Изменено: Дмитрий(The_Prist) Щербаков - 21.09.2021 13:01:07
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
У меня получилась вот такая формула массива:
Код
=СЧЁТ(1/МУМНОЖ(Ч(ТРАНСП(ЕСЛИ(МУМНОЖ(Ч(B1:C22="Yellow");{1:1});A1:A22))=A1:A22);A1:A22)/(B1:B22="White")/(D1:D22>0))
0 считаете положительным числом? Если да, то > заменяем на >=.
*Забыл "1/" дописать. Исправил.
**Ещё так можно:
Код
=СЧЁТ(1/МУМНОЖ(Ч(ТРАНСП(ЕЧИСЛО(ПОИСК("Ye";B1:B22&C1:C22))*A1:A22)=A1:A22);A1:A22)/(B1:B22="White")/(D1:D22>0))
Изменено: Светлый - 21.09.2021 14:28:43
 
Дмитрий(The_Prist) Щербаков, в первом сообщении уже все условия описаны корректно. А в пятом просто опечатка. Cruyff14 разнервничался, из-за того, что его не понимают и нелестно отзываются о его способностях.
Не надо обижать тех, кто просит помощи. Просто внимательнее прочитать условия. А если непонятно, попросить уточнить.
Вот я вижу у Вас "Профессиональная разработка приложений для MS Office". Значит Вы работаете с клиентами. Вы так же с ними общаетесь? Мне их жалко.
Извините.
 
Цитата
Светлый написал:
Значит Вы работаете с клиентами. Вы так же с ними общаетесь?
А Вы с какой целью интересуетесь? :)
Вы очень легко написали, что поняли суть задачи уже из самого первого сообщения. Однако помогли далеко не в самых первых рядах. Видимо легко говорить, что все понятно, когда за Вас все из ТС вытянули и когда здесь уже более 5 сообщений с уточнениями. А тот факт, что при значительном кол-ве довольно смышленых участников форума здесь отметились только трое, а один пропал почти сразу, говорит больше о том, что условия все же описаны не очень понятно не только для меня. Данную задачу точно можно было описать понятнее и корректнее - и именно за ТС это право. Я не обязан додумываться за него что он вкладывает в то или иное предложение и угадывать опечатался он там или реально имел ввиду то, что написал.
Цитата
Светлый написал:
разнервничался, из-за того, что его не понимают
и чего нервничать? Если не понимают - можно попробовать написать чуть иначе. Мы же не на экзамене. То же условие про ГОДЫ озвучено ну очень размыто и понять именно то, что реально было нужно - мне лично было довольно сложно.
Цитата
Светлый написал:
Значит Вы работаете с клиентами. Мне их жалко.
а мне нет. Не надо переходить на личности. Вы не знаете как и с кем я общаюсь и как после этого чувствуют себя мои клиенты. Вы мой клиент? Тогда и делать выводы о том, как я с ними работаю не можете. При всем уважении.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков: поняли суть задачи уже из самого первого сообщения … помогли далеко не в самых первых рядах … за Вас все из ТС вытянули и когда здесь уже более 5 сообщений с уточнениями
он просто всё это время формулу писал  :D

Цитата
Дмитрий(The_Prist) Щербаков: здесь отметились только трое
я вообще подобными гаданиями и "вымаливанием" уточнений не занимаюсь — это не мне надо решение  :D

Цитата
Светлый: Значит Вы работаете с клиентами. Вы так же с ними общаетесь? Мне их жалко
ну а это просто некрасиво и низко так писать  :sceptic:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Светлый, Джэк, Дмитрий, всем огромное спасибо за участие!
Светлый, Вам - отдельное огроменное спасибо!!!
 
Дмитрий(The_Prist) Щербаков, про клиентов перегнул. Прошу прощения.
Но так уничижительно обращаться к ТС тоже нехорошо.
Цитата
Дмитрий(The_Prist) Щербаков написал:
Не надо переходить на личности.
Цитата
Jack Famous написал:
он просто всё это время формулу писал
Я обычно так и делаю, а если что-то непонятно, смотрю, кто уже про это спросил или спрашиваю сам. Решение опубликовал до чтения переписки. Уже потом увидел, что искомые данные в 8 и 13 строках, как у меня.
 
offtop
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Скрытый текст

*Ещё пара решений родилась:
Код
=СЧЁТ(ПОИСКПОЗ(A1:A22;НАИБОЛЬШИЙ((B1:C22="Yellow")*A1:A22;СТРОКА(1:22));)/(B1:B22="White")/(D1:D22>0))
=СЧЁТ(ПОИСКПОЗ(A1:A22;МУМНОЖ(Ч(B1:C22="Yellow");{1:1})*A1:A22;)/(B1:B22="White")/(D1:D22>0))
=СЧЁТ(ПОИСКПОЗ(A1:A99;(НАЙТИ("Y";B1:B99&C1:C99)>0)*A1:A99)/(B1:B99="White")/(D1:D99>0))
Изменено: Светлый - 22.09.2021 18:46:01
Страницы: 1
Наверх