Собственно, вопрос Лист Расписание_уч - расписание учителей. На листе ПОИСК D5:D18 - это то, на какой урок нужна замена. На листе ФОРМУЛА - список свободных учителей на день и на номер урока. Вопрос по столбцу Е. Как определить сколько учителю ждать? Например, возьмем Алееву Согласно листу поиск нужно заменить уроки 1,2,3,4,5,6. Она свободна, согласно листу формула на уроках 1,2,3,4,5. Теперь ее расписание. Она занята на уроках 6,7,8. Значит, если нужно: заместить 1 (первый) урок, то ждать 5 уроков, заместить 2 (второй) урок, то ждать 4 урока, заместить 3 (третий) урок, то ждать 4 урока. Сложность в том, что если уроки не 1,2,3,4,5,6 были бы, а, скажем, что надо заместить 9,10,11. Как же это уместить в формуле, чтобы расчет был верный? Желательно в динамической т.к. я стараюсь для оптимизации их максимально использовать. Если кто знает, пожалуйста, подскажите
отредактируйте пример. уберите ссылки . руками заполните что должно получиться. тут "ПОИСК D5:D18 - это то, на какой урок нужна замена" у вас нет данных
Да, вроде, цифры я увидел правильные, но, если честно, у меня эксель чуть не полег от расчетов! Можно ли оптимизировать формулу? Я так понимаю (сейчас осознал), что столбец С можно вовсе убрать из расчетов. Он никакую функцию не несет Самое главное, возможно ли сделать функцию динамический? Ведь на самом деле в A2 у меня динамическая функция и список этот меняется. Я в пример вставил обычную просто для примера
Если бы у вас все занятия (14 уроков) шли точно по порядку каждый день, для каждого учителя - было бы легче. Пока то что приходит в голову, попробовать в саму таблицу 2 добавить столбец с формулой, и уже из таблицы извлекать динамическими массивами.
Я думаю, что сортировку в базовой входящей таблице можно сделать. Она берется из запроса PQ Итак, нужна сортировка по дню, затем по учителю, потом по № уроку. Верно?
Посмотрите вариант. Формула гораздо быстрее прошлого варианта (не думаю, что это предел совершенства, но точно предел моей фантазии на сегодня). Не динамический массив. Значения: (0-13) - часы ожидания, (-1) значит попадание в свободный урок между занятиями, (урок занят) - попадание в уже поставленный урок, (свободный день) - в этот день нет уроков. Обязательно должны быть включены итоги на таблице 2 (так как для "облегчения" последнюю ячейку определял по ним).
Можно попробовать сделать всю эту таблицу на PQ на основе запроса для Таблицы 2.
R091n спасибо за вариант! Через PQ не получится т.к. работаю из он-лайн. Да, элементы PQ есть у меня, но только тогда, когда происходит обновление расписания. Далее работа только формулами. Все же можно было бы сделать это формулу динамической? Недостаточно ли будет просто сослаться на динамические диапазоны? Или так просто оно не сработает?
И еще самое главное! Почему-то на листе Определение замены строка 2 пишет, что урок занят, но согласно листу Учителя строке 10 - учитель свободен
П.с. фактически на листе Определение замены вы видите только свободных учителей. Там формула с применением фильтра стоит. Поэтому, определение свободен ли учитель или нет - избыточно
Хочу дополнить, что я, не понимая сложности задачи, сейчас очень удивлен насколько сложна формула для нахождения ближайшего этого числа "от ближайшего" урока по расписанию
Диапазон был сдвинут на 1. Протестируйте такой вариант (в файле).
Как я понял, у вас Office 365. Там возможностей побольше. А может кто еще что подскажет. Формула для 365 (динамический массив полностью вся ваша табличка):
Интересный опыт, так как в 365 не работал, практически. В этой формуле нет проверок пустого дня и если пустой урок попадает в зазор между уже имеющимися уроками, то выводится 0. Потестируйте.
Уважаемый R091n Я попробую адаптировать в свою таблицу формулу с LET. А нет ли на русском этой формулы? Я понимаю, что LET, Lambda - они такие, но вот CHOOSECOLS, FILTER, INDEX и др...а то я, боюсь, вообще не смогу ее адаптировать. Выглядит, конечно, очень круто
2R091n Функция на зеленом фоне - высший пилотаж! Я даже поверить не могу, что эксель может так быстро работать, но в ней что-то не так. В строке 2 (столбец F) результате -1 (ждать -1 урок (что правильно), а на зеленом фоне в результате 0 (что не правильно) И еще ко всему этому ABS можно будет добавить? А то ждать -1 как-то неправильно. Должно быть просто 1
Если вы о том же примере, там у учителя 1-8 и 10 уроки. То есть 9 урок попадает между ними. (Что кстати означает ожидание 0 фактически а не 1) В первой моей функции для таких уроков проставлялось -1, а во второй(зеленое поле) 0, я об этом писал. Предложите способ как это должно считаться, посмотрю можно ли его реализовать. Для примера, у учителя 4 урока - 1,2 и 13,14. Как должно считаться ожидание для 5 и 9 уроков?