Страницы: 1
RSS
При выборе даты и номера машины посчитать пройденное расстояние по маршруту.
 
Добрый вечер.

Есть таблица с данными, из которого при выборе даты и номера машины нужно просчитать пройденное расстояние (столбец Пробег) по маршруту. Маршрут  до Склада1/Склада2, и со склада на Точки.

У самого сейчас сумбур в голове, поэтому сложно объяснить, за что прошу прощения. В примере на листе2 попытался показать ручной вариант заполнения таблицы.

В листе2 на 1 мая 2020 был маршрут Склад2-Точка4. Но так как начало маршрута было с Точки6, то надо просчитывать расстояние и с Точки6 до Склада1. Концом маршрута считается либо База1(как это было на 1 мая 2020), либо Склад1/Склад2, но может быть и вариант такой, что маршрут заканчивается и на  Точке.

Хотелось бы это как-то ускорить процесс просчета расстояний, но пока не представляю как, так как диапазоны, которые надо суммировать постоянно разные.
 
stroma, а как определить начало маршрута? ведь есть 01.05.2020 и ранее склад и точки.. так как разные нужно понимать как определить начало и конец маршрута.
Цитата
до Склада1/Склада2
вообще не нашел склад2 ...
мой совет сделать нормальный пример если сейчас он не таков, так как предложенное решение по факту может не подойти к реальному файлу.
Изменено: Mershik - 30.05.2020 23:53:21
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, пример привел из реальных данных, просто поменял названия улиц и складов с точками, и сократил численность улиц, чтоб облегчить для восприятия общую картину (улиц было слишком много).

Началом маршрута может стать любой объект (хоть Склад, База, или Точка1, Точка2, ..., Точка8), предшествующий Складу.

То есть, на 01.05.2020 началом маршрута стала Точка6, так как именно после посещения Точки6 машина поехала на Склад2.

А на 30.04.2020 началом маршрута стала База1, потому что это последний объект, который машина посещала перед тем, как поехать на Склад1.

Про конец маршрута: в начальном посте я немного неправильно выразился. Концом маршрута считается База1.  Либо Точка1, Точка2, ..., Точка8, если после посещения этих Точек машина снова поехала на объект Склад((потому что в этом случае начинается новый маршрут).


Можно сделать попроще, если верхние условия сложны. И началом маршрута считать Склад1 или Склад2, а концом маршрута считать любую Точку, после посещения которой машина поехала на Склад1, или Склад2, или База1.
Изменено: stroma - 31.05.2020 11:15:59
 
Кажется получилось, но в таблице на Лист2 данные в обратном порядке, от конца маршрута.
Изменено: АlехМ - 31.05.2020 15:04:47
Алексей М.
 
АlехМ,даже так это уже великолепно! Большое спасибо!

Только один вопрос. Что делать если в реальных данных названия объектов идут таким образом: RTS ЦС, RTS Пром база, RTS РЦ01, RTS 26, RTS 45, RTS 01, RTS 10 и т.д.

Чтобы формула сработала надо убрать пробелы в названиях?
Изменено: stroma - 31.05.2020 18:55:14
 
Думаю, что придется сделать список всех объектов.
Вместо {"База";"Точк";"Скла"} в формуле сделать ссылку на диапазон списка. Список горизонтальный, если вертикальный, то применить функцию ТРАНСП()
Склад у вас является отсечкой (меткой), поэтому фрагмент формулы СЧЁТЕСЛИ(A4:$B4;"Скла*") надо тоже как-то править
Алексей М.
 
АlехМ, попробовал, как вы сказали (менял ячейки D2, E2), получилось что-то непонятное.  Правда, я немного увеличил объем данных и прибавился новый столбец  (лист Данные)
 
Так?
На Лист2 Км из столбца F
На Лист3 Км из столбца G
Изменено: АlехМ - 02.06.2020 09:13:14
Алексей М.
 
АlехМ, да, все работает. Спасибо большое!

И кстати, а можно без формул массива обойтись? Просто после введения этих формул Эксель стал заметно подвисать. Если вынести данные на другой файл эксель, то это может помочь?
 
Цитата
stroma написал:
можно без формул массива обойтись?
Возможно, но думаю для таких задач нужно изучать VBA.
В VBA использование массивов может сократить на порядки время обработки, а не увеличивать его.
Алексей М.
Страницы: 1
Наверх