Страницы: 1
RSS
Автоматическое вычисление требуемого диапазона переменной длины
 
В течение каждых суток ежечасно фисируется значение параметра X. Необходимо в крайний справа столбец напротив каждого часа конкретных суток занести значение наименьшего отрицательного значения X за эти сутки; в противном случае - 0. В прикреплённом файлике есть два варианта исходных данных. В том случае, если все сутки полные, задача легко и корректно решается использованием в формуле вложенной формулы СМЕЩ (левая группа данных). Но иногда приходится анализировать данные за период времени, когда в начале есть только вечерний "хвост", а последние сутки ограничены только утренними часами, т. е. сутки неполные (правая группа данных). В столбце T задача решена, однако, ссылки на диапазоны, которые нужно проанализировать, введены ручками. Задача заключается в автоматическом вычислении нужных диапазонов. В качестве критерия для СМЕЩ я использовал номер суток. Для первых неполных суток, видимо, для вычисления последней ячейки диапазона можно использовать значение Время_суток=23. А как быть с последними неполными сутками? Подскажите, как можно решить эту задачку.
Изменено: ANP - 19.11.2019 16:37:37
 
ANP, замените вашу формулу на чуть-чуть больше по длине

вроде так... вариант №1
Код
=ЕСЛИ(МИН(ИНДЕКС($R$4:R5;ПОИСКПОЗ("яяяяяя";$K$4:K5;1)):ИНДЕКС(R5:$R$300;ПОИСКПОЗ(ЛОЖЬ;ИНДЕКС(ЕПУСТО(K6:$K$300);0;1);0);1))<0;МИН(ИНДЕКС($R$4:R5;ПОИСКПОЗ("яяяяяя";$K$4:K5;1)):ИНДЕКС(R5:$R$300;ПОИСКПОЗ(ЛОЖЬ;ИНДЕКС(ЕПУСТО(K6:$K$300);0;1);0);1));0)

или вариант №2 смотрите файл с дополнительным столбцом...

Код
=ЕСЛИ(МИН(ИНДЕКС($R$5:$R$65536;ПОИСКПОЗ(U5;$U$5:$U$65536;0)):ИНДЕКС($R$5:$R$65536;ПОИСКПОЗ(U5;$U$5:$U$65536;0)+СЧЁТЕСЛИ($U$5:$U$65536;U5)-1;1))<0;МИН(ИНДЕКС($R$5:$R$65536;ПОИСКПОЗ(U5;$U$5:$U$65536;0)):ИНДЕКС($R$5:$R$65536;ПОИСКПОЗ(U5;$U$5:$U$65536;0)+СЧЁТЕСЛИ($U$5:$U$65536;U5)-1;1));0)
Изменено: Mershik - 19.11.2019 16:24:27
Не бойтесь совершенства. Вам его не достичь.
 
Код
=МИН(ИНДЕКС(C[-1];МИН(ЕСЛИ(ИНДЕКС(C[-2];МАКС(5;СТРОКА()-24)):ИНДЕКС(C[-2];СТРОКА()+24)+1/99>=ЦЕЛОЕ(RC[-2]+1/99);СТРОКА(ИНДЕКС(C[-2];МАКС(5;СТРОКА()-24)):ИНДЕКС(C[-2];СТРОКА()+24))))):ИНДЕКС(C[-1];МАКС(ЕСЛИ(ИНДЕКС(C[-2];МАКС(5;СТРОКА()-24)):ИНДЕКС(C[-2];СТРОКА()+24)+1/99<ЦЕЛОЕ(RC[-2]+1.01);СТРОКА(ИНДЕКС(C[-2];МАКС(5;СТРОКА()-24)):ИНДЕКС(C[-2];СТРОКА()+24)))));0)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Массивная, но не надо искать границы и проблем :-)
=MIN(MIN(IF(TEXT($Q$5:$Q$140;"ДДММГГ")=TEXT(Q5;"ДДММГГ");$R$5:$R$140));0)
А так и совсем расчетов мало
=IF(TEXT(Q4;"ДДММГГ")=TEXT(Q5;"ДДММГГ");T4;MIN(MIN(IF(TEXT($Q$5:$Q$140;"ДДММГГ")=TEXT(Q5;"ДДММГГ");$R$5:$R$140));0))
Изменено: БМВ - 19.11.2019 17:45:43
По вопросам из тем форума, личку не читаю.
 
Ребята, спасибо!
Все варианты рабочие.

Лучше всего подошёл вариант №2 от Mershik. Дополнительный столбец здесь не нужен, т. к. у меня уже есть столбец "№ суток".
Ігор Гончаренко, на мой взгяд, Ваш вариант несколько сложноват, но ход мыслей интересный. Формулы массива от Ігор Гончаренко и БМВ  для моего варианта не подходят, поскольку в файл примера я вынес только  часть своей формулы, в которой была моя проблема. Конечно, оптимальнее  всего, как мне кажется, работает второй вариант от БМВ. В полном варианте формула (с учётом решения, предложенного Mershik), в приложенном файле.
Страницы: 1
Наверх