Страницы: 1
RSS
Подсчет подряд идущих значений, когда серии повторяются
 

Уважаемые форумчане, будьте добры,  помогите решить задачу. Сам никак не могу - тупИК.

Подсчет подряд идущих значений, когда серии повторяются.

Серии вида – 00110111010200 или zzzxxzxiixiiix

Надо подсчитать количество серий, а также найти длину серии (количество подряд идущих значений).

То, что нашел на сайте https://excel2.ru/articles/podschet-podryad-idushchih-znacheniy-v-ms-excel, это отчасти то, что надо (столбики A:I).

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

Значений серий может быть несколько сотен – в столбцах L:Y.  

Из общего значения серии L2:Y2, вычислить общие длинны серий и поместить в AB:AO.

Дальше подсчитать длину серий единиц, нулей, двоек и расположить все это  в одной строке.

 Отдельный подсчет серий из цифр или букв тоже входит в мои интересы.

 
Цитата
ЗнаюЧтОнеЗнаю написал:
а также найти длину серии
допустим, Вы не знаете как определить длину серии, но сформулировать какая серия Вас интересует Вы можете? в предствленном Вами примере много серий.длинна какой серии Вас интересует?
Изменено: Ігор Гончаренко - 05.06.2019 03:54:36
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
так?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь спасибо! Удивительно, что Вы поставили вопрос который мне было трудно сформулировать!

Возможно теперь правильно покажу то, что хочу.
Изменено: ЗнаюЧтОнеЗнаю - 05.06.2019 21:27:59
 
Массивная формула для блока ячеек BD5:BJ18
Код
=ЕСЛИОШИБКА(ИНДЕКС(ЧАСТОТА(ЕСЛИ($K5:$X5=$BD$3;СТОЛБЕЦ($A:$N));ЕСЛИ($K5:$X5<>$BD$3;СТОЛБЕЦ($A:$N)));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(ЕСЛИ(ЧАСТОТА(ЕСЛИ($K5:$X5=$BD$3;СТОЛБЕЦ($A:$N));ЕСЛИ($K5:$X5<>$BD$3;СТОЛБЕЦ($A:$N)))>1;СТРОКА($1:$15));"");СТОЛБЕЦ(A5)));"")
Для следующего блока надо исправить $BD$3 на $BK$3
Серией считает 2 и более подряд идущих одинаковых значений.
*Универсальная формула для всего диапазона:
Код
=ЕСЛИОШИБКА(ИНДЕКС(ЧАСТОТА(ЕСЛИ($K5:$X5=ПРОСМОТР(99;1/(AX$3:BD$3<>"");AX$3:BD$3);СТОЛБЕЦ($A:$N));ЕСЛИ($K5:$X5<>ПРОСМОТР(99;1/(AX$3:BD$3<>"");AX$3:BD$3);СТОЛБЕЦ($A:$N)));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(ЕСЛИ(ЧАСТОТА(ЕСЛИ($K5:$X5=ПРОСМОТР(99;1/(AX$3:BD$3<>"");AX$3:BD$3);СТОЛБЕЦ($A:$N));ЕСЛИ($K5:$X5<>ПРОСМОТР(99;1/(AX$3:BD$3<>"");AX$3:BD$3);СТОЛБЕЦ($A:$N)))>1;СТРОКА($1:$15));"");ОСТАТ(СТОЛБЕЦ(A5)-1;7)+1));"")
Изменено: Светлый - 05.06.2019 12:41:48
 
    Светлый спасибо!
Не могу разобраться как это работает. Мартышка и очки - это мои разбирательства с тем, что Вы прислали.  Не обижайтесь на меня.  К моему  сожалению мои познания 0+ и могу лишь ручками показать , и то не с первого раза, выразить мысль. Спасибо люди форума понимают это.
 Вносимые  значения следует читать по горизонтали.  1 строка K4:X4, 2 строка К5:Х5 и т.д. и их может быть сотни.
 Будьте добры, в таблице показать как действуют формулы.
Изменено: ЗнаюЧтОнеЗнаю - 05.06.2019 19:40:56 (измнения)
 
посчитано
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, я тупил, а теперь окончательно не понимаю, откуда взялись Ваши расчеты - ни одна клетка не отвечает формулой. Я то это ручками тюкал.

Будьте добры, растолкуйте на примере нового файла как и куда вставить формулы, с тем, что-бы в случае необходимости вставить новые значения и их пересчитать, протянув формулу по диапазону значений.
 
нет формул, есть результаты. проверяйте, все-ли правильно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Все верно и столбец значений, с разлета оказался лишним!  Только оч. желательно подсчет в 102 -ixz именно в такой последовательности.
Все же как это получается, ведь каждый раз не будешь обращаться на форумы.
Изменено: ЗнаюЧтОнеЗнаю - 05.06.2019 23:45:21
 
я не знаю что считается, я не знаю сколько разных значений 0, 1, 2...к, х ... будет в данных
будет 6 значегий - будет 6 групп по 7 столбиков правее данных
будет таких значений 46 - будет 46 групп в отчете
алгоритм простой просматриваю данные с 5-й строки, что попалось раньше - то оказалось в отчете впереди остальных
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, Вы заставили шевелиться моей жидкости спасибо! Получается так, что мне подойдет самый простой вариант, где будут i x z. Оказывается, что  не может быть i более 4, как и  x z менее или максимум равно 4 одинаковых серий  подряд.
Изменено: ЗнаюЧтОнеЗнаю - 06.06.2019 00:15:53 (добавить)
 
однако...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Для файла из сообщения 8 массивная формула для диапазона AT4:CI64
Код
=ЕСЛИОШИБКА(ИНДЕКС(ЧАСТОТА(ЕСЛИ($A4:$N4=ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3);СТОЛБЕЦ($A:$N));ЕСЛИ($A4:$N4<>ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3);СТОЛБЕЦ($A:$N)));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(ЕСЛИ(ЧАСТОТА(ЕСЛИ($A4:$N4=ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3);СТОЛБЕЦ($A:$N));ЕСЛИ($A4:$N4<>ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3);СТОЛБЕЦ($A:$N)))>1;СТРОКА($1:$15));"");ОСТАТ(СТОЛБЕЦ(G4);7)+1));"")
Для функции ЧАСТОТА формируются два массива номеров столбцов. Один, где элементы НЕ равны искомому, второй, где равны. Функция выдаёт массив, сколько раз подряд встречается искомый элемент. Выбираем те номера элементов, которые встречаются больше одного раза. Функция ЕСЛИОШИБКА исправляет элементы, которые вышли за длину массива, полученного функцией ЧАСТОТА. Выбираем наименьший (первый, второй, ... по столбцам) и функцией ИНДЕКС из такого же массива, сформированного функцией ЧАСТОТА, берём количество подряд идущих искомых элементов.
Искомый элемент находится в третьей строке, но только в одной ячейке из семи, поэтому для остальных столбцов мы его получаем с помощью формулы:
Код
ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3)
таким образом, для всей строки искомый элемент будет соответствовать каждому столбцу.
Для каждой группы наименьшие надо начинать брать с первого по седьмой. Для этого используем фрагмент формулы:
Код
ОСТАТ(СТОЛБЕЦ(G4);7)+1
Ну и ошибку, когда наименьших больше нет, исправляет внешняя функция ЕСЛИОШИБКА
*А для диапазона ячеек P4:AC64 может быть, подойдёт такая массивная формула:
Код
=ЕСЛИ(ЕСЛИОШИБКА(A4=СМЕЩ(A4;;-1);0=1);O4;ПОИСКПОЗ(;(A4:$O4=A4)*(A4:$O4<>"");)-1)
Она показывает, сколько идёт подряд одинаковых значений.
**Вместо ;O4; можно написать ;"";, тогда длина повторов будет только один раз.
Изменено: Светлый - 06.06.2019 14:18:43
 
            Светлый спасибо!
 Просветления у меня появляются. Собственно вижу свое невежество и излишества в этом ремесле. Каждый из мастеров откликнувшихся на мой вопрос, сделал свое дело - отколов с моих ваяний кучу лишнего. Мыслю, что еще шаг и это будет золотой финал.
 Светлый, в Вашей таблице некоторая часть понята мной. Все же есть вопросы.
1 - Так  д-н   Р:АС  подсчета любых серий, всех их сочетаний, тоже надо, и я показал, как это должно выглядеть.

2 - Прозрел. Для анализа, полезно знать позиции частот по диапазону всего значения 1-14, в каждом отдельно взятом столбце для i=1-14 столбцов. То же для  x z. По этой причине столбиков будет не 7 а 14.

    В кучу свалить - сцепив, при надобности можно потом.
3- В файле 2 Финал - показываю как должно это выглядеть.
4 - Файл 1_СВЕТЛЫЙ... Пытался менять отдельные значения. Не хочет реагировать формула.

5 - Таблица Финал, действительно будет ОК.

Вносимые значения будут периодически удаляться и заменяться новыми.  Формулы будут оставаться в болванке, или достаточно будет ввести новые значения?

Возможно ли, что если их будет разное количество как по - строкам (сотни-тысячи), так и по столбцам (5-14), то это творение будет работать?
 Светлый, я бы хотел как-то рассчитаться с Вами за труд по завершении работы.
Изменено: ЗнаюЧтОнеЗнаю - 06.06.2019 22:12:54
 
ЗнаюЧтОнеЗнаю написал:
Цитата
4 - Файл 1_СВЕТЛЫЙ
Формула ссылалась на диапазон A:N. Переделал на AE:AR
ЗнаюЧтОнеЗнаю написал:
Цитата
1 - Так  д-н   Р:АС  подсчета любых серий, всех их сочетаний, тоже надо
Обязательно по правому краю серию отмечать?
Моя формула массива показывает левый край:
Код
=ЕСЛИ(ЕСЛИОШИБКА(A3=СМЕЩ(A3;;-1);)+(ПОИСКПОЗ(;(A3:$O3=A3)*(A3:$O3<>"");)<3);"";ПОИСКПОЗ(;(A3:$O3=A3)*(A3:$O3<>"");)-1)

ЗнаюЧтОнеЗнаю написал:
Цитата
2 - Прозрел. Для анализа, полезно знать позиции частот
Формулу переделал.
*Сделал универсальную формулу для всего диапазона AE:BV :
Код
=ЕСЛИ(ПРОСМОТР(99;1/(Q$1:AE$1<>"");Q$1:AE$1)=СМЕЩ($A3;;ОСТАТ(СТОЛБЕЦ(O3);15));СМЕЩ($P3;;ОСТАТ(СТОЛБЕЦ(O3);15));"")
Изменено: Светлый - 07.06.2019 08:15:35
 
Подсчет подряд идущих значений (длина серий с условием)


Добрый день, уважаемые форумчане! Нужна Ваша помощь.

У меня похожая задача. Необходимо посчитать количество подряд идущих значений температуры, которая больше 10 градусов.
По ссылке, приведенной выше (https://excel2.ru/articles/podschet-podryad-idushchih-znacheniy-v-ms-excel) очень близкий вариант решения, но пока я не до конца разобралась как именно прописать условие (больше 10 градусов). Подскажите, пожалуйста, как можно решить задачу. Может есть какой-то другой вариант подсчета серий?

Конечный результат нужен как на рисунке в столбце "Длина серий".  
Изменено: Anna Andre - 08.09.2022 15:37:25
 
Anna Andre, через доп. столбец

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, спасибо! Конечно, было бы удобнее, если бы условие сразу было прописано в одной формуле. Но за неимением лучшего, этот вариант рабочий и тоже подходит :)
 
Anna Andre, без доп. столбца (формула массива) ввести в F2 и протянуть вниз:
=ЕСЛИ((E2>10)<>(E3>10);СУММ(--(($E$2:E3>10)=(E2>10)))-СУММ(ЕСЛИ(ЕЧИСЛО($F$1:F1);(($E$1:E1>10)=(E2>10))*$F$1:F1;0));"")

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, благодарю!!!  
 
Привет! Подскажите, пожалуйста, как рассчитать количество двух дневных смен у сотрудника подряд на протяжении месяца, используя ту или иную формулу (пример во вложении)?
Судя по примеру их 2, но в больших массивах не вывести. Дайте ответ, плиз. :(  
 
Виктор Сухоруков, =SUMPRODUCT((C5:AE5="Д")*(D5:AF5<>"Д")*(A5:AC5<>"Д")*(B5:AD5="Д"))
По вопросам из тем форума, личку не читаю.
 
Большое спасибо, ув. Модератор!
Хотелось бы понять принцип работы (пока в просторах интернета с учетом своих данных ответа найти не могу). По какому принципу можно менять данные, напр., для 3 или 4 смен подряд?
Большое спасибо за ответы!
 
Если длительность переменна, то лучше так, но массивно
=SUM(--(FREQUENCY(IF(B5:AE5="д";COLUMN(B5:AE5));IF(B5:AE5<>"д";COLUMN(B5:AE5)))=2))
принцип первой прост просто для ваших дподряд идущих смен должы выполнятся условия.: подряд ячейки равны Д, а по краям нет. Останется только сложить все значения полученные.произведения будут раны 1 в случае выполнения условий, но если нужно получить 3 или 4 подряд идущих, то формула удлинняется.

в варианте тот что в этом посте, используется часть статьи Самая длинная победная серия (planetaexcel.ru) остается только сравнить полученный массив с тем количество что требуется, в данном случае 2 и просуммировать. Тут для 3 или 4 достаточно заменить 2 на 3 или 4.
По вопросам из тем форума, личку не читаю.
 
Еще раз благодарю, успешно пошел по варианту "Тут для 3 или 4 достаточно заменить 2 на 3 или 4."
Страницы: 1
Наверх