Шаг 282.
VBA в MSExcel.
Планирование маршрута. Рабочий лист Ввод. Область выбора маршрута

    На этом шаге мы рассмотрим соддержимое этой области.

    Рабочий лист Ввод (рисунок 1) предназначен непосредственно для прокладывания маршрута через выбранные НП и расчета времени в пути по этому маршруту с учетом средней скорости и возможных задержек.


Рис.1. Область выбора маршрута рабочего листа Ввод

    Его условно можно разделить на четыре составляющих:

    Рассмотрим более подробно каждую составляющую.

Область выбора маршрута

    Область выбора маршрута (рисунок 1), в свою очередь, состоит из:

Элементы управления Поле со списком для ввода названий НП
Восемь элементов управления Поле со списком расположены в правой части области выбора маршрута и предназначены для автоматизации ввода названий НП.

    Каждому элементу управления в диалоговом окне Формат элемента управления в поле Формировать список по диапазону задайте область В2:В200 на рабочем листе Города, в которую введены названия НП (рисунок 2).


Рис.2. Рабочий лист Города

    Элементы Поле со списком помещают результат (порядковый номер названия НП по списку на листе Города) в ячейки R1:R8.

Область вывода названий НП и расстояний между ними
В ячейки F2:F8 вводятся названия НП, которые являются отправными пунктами части маршрута, а в ячейки I2:I8 - названия НП конечной точки части маршрута. Для автоматизированного ввода данных в ячейку F2 введена формула поиска названия НП в списке на листе Города:
  =ВПР(R1;Города!$A$2:$B$200;2;ЛОЖЬ) 

    Искомым значением, по которому формулой производится поиск названия НП, является порядковый номер в ячейке R1, под которым этот НП находится в списке на листе Города. В остальные ячейки диапазона F3:F8 введены ссылки на ячейки, в которых находятся формулы поиска названий НП конечной точки предыдущей части маршрута. Например, в ячейке F3 находится ссылка на ячейку G2.

    В ячейке G2 формула, которая производит поиск названия НП конечного пункта части маршрута, но если в списке НП указан текст НЕТ, то тогда возвращает значение "":

  =ЕСЛИ(ВПР(R2;Города!$A$2:$B$200;2;ЛОЖЬ)="НЕТ";"";
    ВПР(R2;Города!$A$2:$B$200;2;ЛОЖЬ)) 

    В ячейке G3 находится формула аналогичная предыдущей:

  =ЕСЛИ(F3="";"";ЕСЛИ(ВПР(R3;Города!$A$2:$B$200;2;ЛОЖЬ)="НЕТ";"";
    ВПР(R3;Города!$A$2:$B$200;2;ЛОЖЬ))) 
но с помощью добавленной первой логической функции ЕСЛИ, при отсутствии значения в ячейке F3 названия НП, возвращает значение "". Это позволяет не отражать в последующих ячейках никаких наименований, что делает работу по вводу данных более удобной.

    В диапазоне ячеек Н2:Н8 находятся формулы соединения текста названия НП, находящиеся в столбцах F и G.

    В ячейке I2 находится формула, которая при значении в ячейке G2, отличном от "", производит поиск расстояния между НП на листе База:

  =ЕСЛИ(G2="";"";ВПР(H2;База!C:D;2;ЛОЖЬ)) 

    Весь маршрут, с наименованиями населенных пунктов, через которые проложен путь, формируется в ячейке F11 по формуле, соединяющей названия НП через знак прочерка:

  =СЦЕПИТЬ(F2;" - ";G2;" - ";G3;" - ";G4;" - ";G5;" - ";G6;" - ";G7;" - ";G8) 

    В ячейке I11 находится формула суммирования всех отрезков пути между НП, формируемая в диапазоне ячеек I2:I8.

    В верхней части листа находится кнопка Обновить все формулы, задачей которой является обновление всех формул на листе Ввод с помощью назначенного ей макроса ОбновитьВсеФормулы. Этот макрос создается механической записью всех введенных на этом листе формул и последующей редакцией кода VBA.

Область ввода прогнозирующих составляющих
В разрабатываемом приложении предполагается, что автомобиль будет двигаться по всему маршруту со средней скоростью, значение которой вводится в ячейку I13 (рисунок 3).


Рис.3. Область ввода прогнозных данных рабочего листа Ввод

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

    В ячейки диапазона F16:F22 введите ссылки на ячейки диапазона G2:G8, указывающие название НП, являющегося конечным пунктом отрезка пути.

    В области I16:I22 введите с клавиатуры время в часах, необходимое для остановок на каждом отрезке пути или городе, являющимся конечным пунктом одного из отрезков пути, название которого указано в диапазоне F16:F22. Например, на обед, на отдых, время на разгрузку/погрузку в этом пункте и так далее.

    И в ячейку I24 вводится предполагаемые дата и время выезда из начальной точки отправления.

    На следующем шаге мы рассмотрим область определения времени прибытия и отправления.




Предыдущий шаг Содержание Следующий шаг