Страницы: 1
RSS
Найти в графике смен номер бригады по нескольким условиям
 
Здравствуйте.

Не могу никак подобрать формулы, чтобы наконец стало искать данные в таблицах и подставлять в соответствующие ячейки. Я уже раньше делала подобное, и какими-то околесными путями всё получалось, но не в этом случае.

Имеются два листа. На одном данные для заполнения, на другом график рабочих смен. На первом листе необходимо найти, какой же номер бригады работал в тот момент, когда началась остановка агрегатов. Все ненужные столбцы я удалила, оставила лишь те, с которыми идет работа, оставила немного строк для примера. Создала вспомогательные столбцы и пыталась мудрить в двух других столбцах, один из которых и надо заполнять автоматически.

Рабочие смены каждый день две: с 8:00 до 20:00 (дневная смена - "д") и с 20:00 до 8:00 (ночная смена - "н")

То есть, если остановка была 04.06.2021 в 1:39, то бригаду надо искать учетной датой 03.06.2021 ночной сменой (уже готовые столбцы с этими данными столбцы A и D), а не по времени начала остановки. То есть 3 июня в ночь работала 1 бригада, это число и должна найти формула.

В любом случае, как я уже только не вводила, ничего не получается, постоянно выводит ошибки.
Что я должна изменить, чтобы хоть как-то продвинуться? Или может кто-нибудь сможет подсказать подходящие формулы...
Я пыталась залить файл более старых версий, но в таком случае перестают работать формулы графика с условиями... Поэтому я скопировала данные в график, без формул.  
Изменено: vikttur - 23.06.2021 16:10:44
 
Код
=ИНДЕКС(СМЕЩ(Июнь!$A$1;3+6*(МЕСЯЦ(ЦЕЛОЕ([@[Дата/время начала]])-([@[Время начала остановки]]<8/24))-1)-1+2;1;4;1);ПОИСКПОЗ(ЕСЛИ(ИЛИ([@[Время начала остановки]]<8/24;[@[Время начала остановки]]>=20/24);"н";"д");СМЕЩ(Июнь!$A$1;3+6*(МЕСЯЦ(ЦЕЛОЕ([@[Дата/время начала]])-([@[Время начала остановки]]<8/24))-1)-1+2;ДЕНЬ(ЦЕЛОЕ([@[Дата/время начала]])-([@[Время начала остановки]]<8/24))+1;4;1);0))
 
Код
=ЦЕЛОЕ(ОСТАТ([@[Учетная дата]]-44197-([@[Время начала остановки]]<1/3)-5*(([@[Время начала остановки]]>1/3)*([@[Время начала остановки]]<5/6));8)/2)+1
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
МатросНаЗебре, Благодарю вас, работает вроде всё хорошо... Мне придется изрядно подумать, чтобы понять, как это работает... Я еще ни разу не работала с функцией Смещ(). Это интересно для меня, подумать. ) Сразу увидела кучу своих ошибок, потому что данные вечно меняются, и при копировании измененных данных при выгрузке из программы, бригады, что я вводила вручную, уже не соответствуют действительности.

Ігор Гончаренко, Спасибо вам тоже! Это выглядит проще, но при расчете в некоторых местах находит неверно и вставляет не тот номер бригады. Я пока не знаю, почему. Я подумаю над этим потом также. Ближайший пример в данном файле, который не соответствует, это дата начала 11.06.2021  6:19:00. Должна быть 1, а ставит 4 бригаду.
 
в формуле видно я вообще не обращаюсь к данным листа Июнь
расчет основан на том что график стабилен на века
если 1 бригада начала 1 января с двух подряд ночных смен значит через 8 дней (9 января) снова будут 2 подряд ночные
для 2-й бригады этот же график 2 ночные, 3 выходных, 2 дневный, выходной начался с 3 января 2021 года
для 3-й с 5-го января
для 4-й с 7 января
я предполагал что через каждые 8 дней этот цикл повторяется и НИЧЕГО не искал в фактическом графике дежурств, а считал на основании описанного выше цикла)
и присмотритесь
11.06.202111.06.2021 20:0620:06:00н1
11.06.202112.06.2021 1:501:50:00н1
это совпадает с данными графика за июнь
Изменено: Ігор Гончаренко - 24.06.2021 15:20:14
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх