Прошу помощи в решении следующей задачи. Необходимо создать в Excel производственный план для одного рабочего места на неограниченное время вперёд. Исходные данные: 1. Точка начала планирования (дата и время, например, 10.08.2013 10:00:00). 2. Данные по нескольким деталям, которые необходимо обработать на рабочем месте. По каждой детали: 2.1. Нормативное время на обработку одной детали. 2.2. Количество деталей. 2.3. Чистое рабочее время на партию деталей (умножаем п. 2.1 на 2.2.). Детали обрабатываются последовательно - обработка следующей партии деталей начинается сразу же после окончания обработки предыдущей партии деталей. 3. Данные по рабочему графику. В течение смены есть 3 перерыва, во время которых работа не производится - один межсменный и два обеденных. Не важно, собственно, как они называются, важно, что станок в это время стоит. Соответственно, есть 6 точек: 3.1. Время начала перерыва 1 (часы и минуты, например, 23:00). 3.2. Время окончания перерыва 1. 3.3. Время начала перерыва 2. 3.4. Время окончания перерыва 2. 3.5. Время начала перерыва 3. 3.6. Время окончания перерыва 3. Теоретически любой из этих перерывов может переходить с одних суток на другие (например, начало в 23:00, окончание в 1:00). Выходных дней нет, работа идёт ежедневно с остановками на перерывы в соответствии с графиком перерывов.
Требуется: вычислить с точностью до минут дату и время окончания обработки партии по каждой детали (оно же - время начала обработки следующей партии) с учётом перерывов. Окончание обработки, соответственно, не может приходиться на перерыв. В исходные данные сразу забивается информация по нескольким деталям, т. е. план надо создать сразу для нескольких деталей. Размер партии может быть любой - она может обрабатываться и несколько часов (меньше суток), и несколько дней.
В реальности есть ещё время переналадки станка между партиями деталей, которую тоже надо учитывать (длительность переналадки задаётся), но с этим я, возможно, и сам потом справлюсь, если будет базовое решение по учёту перерывов. Без перерывов всё выглядело бы легко и просто, но в них-то и состоит вся загвоздка. Я порылся на форуме, есть темы про время, но подобной моей задаче я не нашёл.
Файл примера прилагаю.
Можно ли как-то решить эту задачу, по возможности без макросов? Я попытался и что-то завяз. Мало опыта работы со временем. Наверняка существует более-менее элегантное решение.
И ещё одно соображение себе позволю. Я видел на форуме много примеров очень сложных завёрнутых формул, когда в одной формуле сразу большое дерево алгоритмов вшито (ЕСЛИ). Это выглядит очень круто, но так бывает сложно разобраться, прям глаза сломаешь порой. Я в ситуациях, когда получается сложное дерево условий, делю формулу на части, с поэтапным расчётом по отдельным ячейкам. Сперва рассчитаем одно условие и в ячейку запишем, например, единичку или нолик в зависимости от результата, потом второе условие, тоже результат запишем, и так далее, потом уже промежуточные результаты друг с другом соотносим. Так и понимать формулу проще, и проверить результат пошагово можно. Вот если кто-то возьмётся за мою задачу, очень прошу по возможности именно так делать, не писать формулы в десять строк.
Буду благодарен за решение.
Добрый день, уважаемые коллеги.
Прошу помощи в решении следующей задачи. Необходимо создать в Excel производственный план для одного рабочего места на неограниченное время вперёд. Исходные данные: 1. Точка начала планирования (дата и время, например, 10.08.2013 10:00:00). 2. Данные по нескольким деталям, которые необходимо обработать на рабочем месте. По каждой детали: 2.1. Нормативное время на обработку одной детали. 2.2. Количество деталей. 2.3. Чистое рабочее время на партию деталей (умножаем п. 2.1 на 2.2.). Детали обрабатываются последовательно - обработка следующей партии деталей начинается сразу же после окончания обработки предыдущей партии деталей. 3. Данные по рабочему графику. В течение смены есть 3 перерыва, во время которых работа не производится - один межсменный и два обеденных. Не важно, собственно, как они называются, важно, что станок в это время стоит. Соответственно, есть 6 точек: 3.1. Время начала перерыва 1 (часы и минуты, например, 23:00). 3.2. Время окончания перерыва 1. 3.3. Время начала перерыва 2. 3.4. Время окончания перерыва 2. 3.5. Время начала перерыва 3. 3.6. Время окончания перерыва 3. Теоретически любой из этих перерывов может переходить с одних суток на другие (например, начало в 23:00, окончание в 1:00). Выходных дней нет, работа идёт ежедневно с остановками на перерывы в соответствии с графиком перерывов.
Требуется: вычислить с точностью до минут дату и время окончания обработки партии по каждой детали (оно же - время начала обработки следующей партии) с учётом перерывов. Окончание обработки, соответственно, не может приходиться на перерыв. В исходные данные сразу забивается информация по нескольким деталям, т. е. план надо создать сразу для нескольких деталей. Размер партии может быть любой - она может обрабатываться и несколько часов (меньше суток), и несколько дней.
В реальности есть ещё время переналадки станка между партиями деталей, которую тоже надо учитывать (длительность переналадки задаётся), но с этим я, возможно, и сам потом справлюсь, если будет базовое решение по учёту перерывов. Без перерывов всё выглядело бы легко и просто, но в них-то и состоит вся загвоздка. Я порылся на форуме, есть темы про время, но подобной моей задаче я не нашёл.
Файл примера прилагаю.
Можно ли как-то решить эту задачу, по возможности без макросов? Я попытался и что-то завяз. Мало опыта работы со временем. Наверняка существует более-менее элегантное решение.
И ещё одно соображение себе позволю. Я видел на форуме много примеров очень сложных завёрнутых формул, когда в одной формуле сразу большое дерево алгоритмов вшито (ЕСЛИ). Это выглядит очень круто, но так бывает сложно разобраться, прям глаза сломаешь порой. Я в ситуациях, когда получается сложное дерево условий, делю формулу на части, с поэтапным расчётом по отдельным ячейкам. Сперва рассчитаем одно условие и в ячейку запишем, например, единичку или нолик в зависимости от результата, потом второе условие, тоже результат запишем, и так далее, потом уже промежуточные результаты друг с другом соотносим. Так и понимать формулу проще, и проверить результат пошагово можно. Вот если кто-то возьмётся за мою задачу, очень прошу по возможности именно так делать, не писать формулы в десять строк.
На уровне деталей точности планирования не требуется. У нас в производстве длительность обработки одной детали, как правило, не велика по сравнению с общим количеством деталей в партии, поэтому плюс-минус несколько минут - это не страшно. Нормативное время на деталь я добавил просто для понимания задачи, в принципе можно на него не глядеть и рассматривать чистое рабочее время на партию как один "пирог", который уже надо "порезать" внутри каждых суток и уложить в рабочее время. Не надо рассматривать дискретные отрезки времени на каждую деталь, давайте смотреть чистое рабочее время на партию как объект препарирования.
На уровне деталей точности планирования не требуется. У нас в производстве длительность обработки одной детали, как правило, не велика по сравнению с общим количеством деталей в партии, поэтому плюс-минус несколько минут - это не страшно. Нормативное время на деталь я добавил просто для понимания задачи, в принципе можно на него не глядеть и рассматривать чистое рабочее время на партию как один "пирог", который уже надо "порезать" внутри каждых суток и уложить в рабочее время. Не надо рассматривать дискретные отрезки времени на каждую деталь, давайте смотреть чистое рабочее время на партию как объект препарирования.Hugi
Может быть, у кого-то есть пусть не готовые формулы с решением, а хотя бы соображения по методике, как это проще всего сделать, с какого бока подступаться?
Может быть, у кого-то есть пусть не готовые формулы с решением, а хотя бы соображения по методике, как это проще всего сделать, с какого бока подступаться?Hugi
Да, спасибо. Я в ней уже второй день сижу, сейчас вырабатываю решение. В этой теме есть интересные мысли, я ими сейчас пользуюсь, но всё же задача там несколько другая - там заранее заданы даты и время начала и окончания работ, и по ним надо найти длительность, вычитая перерывы. Мне же наоборот - зная длительность, необходимо высчитать даты и время окончания работ.
Да, спасибо. Я в ней уже второй день сижу, сейчас вырабатываю решение. В этой теме есть интересные мысли, я ими сейчас пользуюсь, но всё же задача там несколько другая - там заранее заданы даты и время начала и окончания работ, и по ним надо найти длительность, вычитая перерывы. Мне же наоборот - зная длительность, необходимо высчитать даты и время окончания работ.Hugi
Michael, большое спасибо. Не сразу понял, как Ваше решение работает, но потом разобрался. Я сам начал делать своё решение, для начала только для одного перерыва. Но уже для одного перерыва, и ещё не закончив целиком, у меня гораздо более громоздкий вариант получается. Я начал делить всё рабочее время на время, относящееся к начальному дню, к полным рабочим дням, к конечному дню, каждый раз рассчитывал остаток времени, потом появился довольно ветвистый алгоритм расчёта итогового значения... Короче, очень долго. А когда я бы добавил ещё пару перерывов, у меня бы целый лес алгоритмов вырос. У Вас всё просто и достаточно компактно. И перерывов можно сделать сколько угодно, сложность не вырастет. Принципы понятны, с остальными мелочами я разберусь. Спасибо.
Michael, большое спасибо. Не сразу понял, как Ваше решение работает, но потом разобрался. Я сам начал делать своё решение, для начала только для одного перерыва. Но уже для одного перерыва, и ещё не закончив целиком, у меня гораздо более громоздкий вариант получается. Я начал делить всё рабочее время на время, относящееся к начальному дню, к полным рабочим дням, к конечному дню, каждый раз рассчитывал остаток времени, потом появился довольно ветвистый алгоритм расчёта итогового значения... Короче, очень долго. А когда я бы добавил ещё пару перерывов, у меня бы целый лес алгоритмов вырос. У Вас всё просто и достаточно компактно. И перерывов можно сделать сколько угодно, сложность не вырастет. Принципы понятны, с остальными мелочами я разберусь. Спасибо.Hugi