К содержанию

Подтема 2 из 6

Расписание в Excel

Как посчитать начала и окончания для таблицы из файла: поставщики по столбцам, их окончания через ВПР, начало — МАКС.

Таблица в Excel

В файле экзамена процессов двадцать и больше. Как посчитать расписание, не делая всё руками?

Записать то же правило формулами: для каждого процесса найти окончания его поставщиков, взять из них максимум и прибавить время работы. Формулы будут одинаковыми для всех строк — их напишем один раз и протянем. Порядок такой:

  1. разложить список поставщиков по отдельным столбцам;
  2. для каждого поставщика найти его окончание по ID;
  3. начало — максимум этих окончаний, окончание — начало плюс время;
  4. общее время — максимум столбца окончаний.

Столбцы расположим так: A — ID, B — время работы, C и D — поставщики, E и F — их окончания, G — начало, H — окончание. Покажем на восьми процессах учебного примера — должно получиться то же, что руками: итог 14.

Поставщики по столбцам

В ячейке записано «1;2». Как искать каждого поставщика отдельно?

Разложить список по столбцам: Данные → Текст по столбцам, с разделителями, разделитель — точка с запятой. Тогда «1;2» станет двумя ячейками: 1 и 2. В LibreOffice команда называется так же и стоит в меню «Данные».

Столбцов под поставщиков нужно столько, сколько их у процесса с самым длинным списком. У нас их два — C и D. Справа от столбца со списком должны быть пустые столбцы, иначе разложенные значения затрут соседние данные.

После разложения все ID становятся числами. Это важно: в файлах одиночный поставщик часто записан текстом, а ВПР не находит число «5», записанное как текст.

Окончание поставщика: ВПР

Как по ID поставщика найти, когда он закончился?

Функцией : она находит строку с нужным ID и берёт из неё окончание. Окончания поставщиков ставим в E и F, начало — в G, окончание — в H:

E2=ЕСНД(ВПР(C2;$A$1:$H1;8;0);0)
  • C2 — ID поставщика, которого ищем.
  • $A$1:$H1 — где ищем: строки выше текущей. Поставщики стоят выше тех, кто их ждёт, поэтому этого хватает. При протягивании вниз конец диапазона растёт: $A$1:$H2, $A$1:$H3 и так далее.
  • 8 — номер столбца в диапазоне: восьмой — H, окончание.
  • 0 — искать точное совпадение ID.
  • ЕСНД(…;0) — если ВПР ничего не нашла (ID 0 или пустая ячейка), вместо ошибки #Н/Д будет 0.

Формулу протягиваем вправо на F2 — там будет второй поставщик из D2 — и вниз до девятой строки. Знак закрепляет столбцы диапазона и его первую строку, а последняя строка без $ — она и растёт.

Тонкости:почему не вся таблица

Если искать во всём диапазоне, формула строки увидит и окончание своего же процесса, которое от неё зависит. Excel сочтёт это циклической ссылкой. Строки выше этой проблемы не имеют.

Но тогда поставщик должен стоять выше. В файлах экзамена так и есть: процесс зависит только от процессов с меньшими ID. Если встретится таблица, где это не так, сначала переставь строки так, чтобы поставщики шли выше тех, кто их ждёт (сортировка по ID это не гарантирует), а ЕСНД здесь опасна — она молча подставит 0 вместо ненайденного поставщика.

Начало, окончание, итог

Окончания поставщиков найдены. Что дальше?

Начало — их максимум, окончание — начало плюс время, общее время — максимум столбца окончаний.

G2=МАКС(E2:F2)
H2=G2+B2
H11=МАКС(H2:H9)

G2 и H2 протягиваем вниз. Весь расчёт на одном листе — значения те же, что в расчёте руками:

G5=МАКС(E5:F5)
ABCDEFGH
1IDВремяПост. 1Пост. 2Оконч. 1Оконч. 2НачалоОкончание
21400004
32600006
43314047
542124668
655260611
7643478812
872458111113
9816712131314
10
11Все готовы14
Формулы в ячейках
  • E2скопирована до F9=ЕСНД(ВПР(C2;$A$1:$H1;8;0);0)
  • G2скопирована до G9=МАКС(E2:F2)
  • H2скопирована до H9=G2+B2
  • H11=МАКС(H2:H9)

Выбери G5 — начало процесса 4: рамки стоят на окончаниях его поставщиков, 4 и 6. Поменяй время процесса 6 в B7 с 4 на 6 — итог станет 15, как в расчёте руками.

Итого

  • ПоставщикиДанные → Текст по столбцам, разделитель «;»
  • Окончание поставщика=ЕСНД(ВПР(C2;$A$1:$H1;8;0);0)
  • Где ищемстроки выше: поставщики стоят выше
  • Начало=МАКС(E2:F2)
  • Окончание=G2+B2
  • Общее время=МАКС(H2:H9)

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
У процесса 6 поставщики 3 и 4 стоят в C7 и D7. Что покажут E7, F7 и G7?
ОтветСкрыть ответ
Ответ
E7 — 7 (окончание процесса 3), F7 — 8 (окончание процесса 4), G7 — их максимум, 8: это начало процесса 6.
Вопрос 2
Что вернёт ВПР(C2;$A$1:$H1;8;0) для процесса 1, у которого в C2 стоит 0? Зачем вокруг ЕСНД?
ОтветСкрыть ответ
Ответ
Процесса 0 нет — ВПР вернёт ошибку #Н/Д. ЕСНД заменит её на 0: у процесса без поставщиков ждать некого.
Вопрос 3
Почему в формуле E5 диапазон поиска — $A$1:$H4, а не вся таблица?
ОтветСкрыть ответ
Ответ
Поставщики стоят выше получателя, поэтому хватает строк выше. А вся таблица включала бы и окончание самого процесса, которое зависит от этой формулы, — Excel увидел бы замкнутую ссылку.
Вопрос 4
Что значит число 8 в формуле ВПР(C2;$A$1:$H1;8;0)?
ОтветСкрыть ответ
Ответ
Номер столбца внутри диапазона A:H. Восьмой — H, окончание процесса. Это не ID и не время.
Вопрос 5
В файле у процессов бывает до трёх поставщиков. Сколько столбцов нужно под поставщиков и под их окончания? Какой номер столбца будет в ВПР?
ОтветСкрыть ответ
Ответ
Три и три: поставщики C:E, их окончания F:H, начало I, окончание J. Окончание — десятый столбец, поэтому в ВПР стоит 10.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Что вернёт =ВПР(30;A2:B4;2;0) для таблицы из примера (10 — 5, 20 — 8, 30 — 12)?

Введите число.

Общее время по файлу 22-1

В файле 22-1.xlsx приведены данные о процессах: ID процесса B, время его выполнения (мс) и ID процессов A, от которых он зависит. Независимые процессы начинаются в момент 0, зависимый — сразу после завершения всех процессов, от которых он зависит. Определите минимальное время (в мс), через которое завершится выполнение всей совокупности процессов. Реши через ВПР, разделив список поставщиков по столбцам.

22-1.xlsxПроцессы — Excel-файл, как на экзаменеExcel · 5,2 КБ

Введите число.