Страницы: 1
RSS
Сколько раз подряд по одному., Сколько раз подряд по одному.
 
Приветствую участников форума. Прошу помочь создать формулу. Файл приложен. В искомой колонке B нужно найти, сколько раз подряд повторялось число 1 в исходной колонке А: один раз, два раза, три раза и т. д. Цифра количества раз должна стоять напротив последнего случая наступления числа 1 в каждом цикле. В примере это видно. В примере искомая колонка B посчитана вручную без формулы.
 
Добрый день

Код
=(A4<>1)*(A3=1)*(СТРОКА()-ПРОСМОТР(;-1/($A$1:A2<>1);СТРОКА($A$1:A2)))
 
Андрей Лящук, большое спасибо, работает!
 
Андрей Лящук, а можно логику формулы расписать, очень интересное решение, может в будущем может пригодится где-нибудь?если не сложно конечно.
Не бойтесь совершенства. Вам его не достичь.
 
Код
(A4<>1)*(A3=1)
определяет что ячейка A3 последняя 1 в серии
конструкция типа
Код
ПРОСМОТР(;-1/{0:1:0:1:0:0:0};{1:2:3:4:5:6:7})
вернет 4 т.к. искомое значение (0) заведомо > любого значение из просматриваемого вектора, ошибки игнорируются (в данном случае #ДЕЛ/0!), следоватеьно возвращаетя значение из вектора результатов соответствующее позиции последнего чилового значения  в просматриваевом векторе.
Код
ПРОСМОТР(;-1/($A$1:A2<>1);СТРОКА($A$1:A2))
возвращает из строк от 1й до предыдущей номер последней строки, где значение<>1
а формулу можно упростить
Код
=(A4<>1)*(A3=1)*(СТРОКА()-ПОИСКПОЗ(;-1/($A$1:A2<>1)))


Во намудрил  8-0 Объясняльщик из меня еще тот :)
 
Mershik, так всежпросто количество в серии равно номеру строки за минусом предшедствующей строки со значением не равной искомому. Ну а =(A4<>1)*(A3=1) определяет считать ли это или нет Единственное что дабы не считать лишнее яб вот так записал
=IF(AND(A4<>1;A3=1);ROW()-LOOKUP(;-1/($A$1:A2<>1);ROW($A$1:A2)))
По вопросам из тем форума, личку не читаю.
 
Ещё вариант. Массивная:
Код
=(СТРОКА()-МАКС((A$2:A3<>1)*СТРОКА($2:3)))*(A4<>1) 

*А если поиграться с упрощённой формулой Андрея, то получается это:

Код
=(A4<>1)*(СТРОКА()-ПОИСКПОЗ(;-1/(A$1:A3<>1)))
Изменено: Светлый - 01.10.2019 23:00:23
 
Написал с упрощением одной проверки, но уже Светлый опередил
Код
=(ЧСТРОК(A$2:A3)-ПОИСКПОЗ(2;1/(A$2:A3<>1)))*(A4<>1)
Изменено: MCH - 01.10.2019 23:05:04
 
Андрей Лящук,MCH,, Светлый, БМВ , Mershik, огромное спасибо за варианты! Главное, работает! У самого так и не получилось составить одну формулу, поэтому пользуюсь предложенными. А сам смог только достигнуть цель двумя колонками, а не одной, то есть одна колонка - вспомогательная. Прилагаю и этот вариант в файле.
Вспомогательная: =ЕСЛИ(A4=1;B3+A4;0). Искомая: =ЕСЛИ(B5=0;B4;0). Правда, самое первое значение нужно ставить вручную.  Ну а с одной колонкой - то что надо!  Еще раз большое спасибо!
Страницы: 1
Наверх