Страницы: 1
RSS
Поиск маршрута по листам, Поиск пути подключений
 
Здравствуйте, товарищи!
Я не часто программирую, поэтом, нарисовав себе задачу, вроде бы и простую, столкнулся с небольшими сложностями. Надеюсь, вы сможете подсказать приличное решение. Эта задача у меня решена и она работает, но мне не нравится такое решение, хочу переделать...
Задача:
Есть АТС с некоторым количеством абонентов. Сеть связи раскидана по территории предприятия. Подключения идут через ШР (Шкаф распределительный), КР (Коробка распределительная) и КП (Кросс-панель).
Сеть связи старая. Некоторые номера подключены скрутками или клеммниками (где как) и могут идти в разные здания. Необходимо по всем листам ШР, КР, КП найти интересующий номер и построить трассы - если всюду последовательное подключение, то одну трассу, если есть где-то ветвления, то, соответственно, выделить отдельные ветки и построить трассы целиком.
Не могу пока сообразить, как эту задачу красиво решить, чтоб учитывала различные варианты ветвлений по трассе - количество ШР, КР и КП неизвестно заранее, равно как и ответвления могут быть на любом этапе.
То решение, которое я накидал, меня не устраивает своей громоздкостью...
Подскажите пожалуйста, как можно эту задачу решить более-менее универсально, а то я, в силу своего небольшого опыта с VBA, пока не смог получить удовлетворяющее меня решение.
Файл с примером прилагаю.
 
Может, и без VBA можно обойтись? Если правильно понял задачу, исходные данные можно по другому расположить и потом через сцепку ВПР-ом тянуть, или сводной.
Изменено: _Igor_61 - 21.05.2019 00:12:05
 
Нет. Я делал с помощью формул, получилось громоздко и не учитывает вариантов с добавлением новых листов - например, монтаж новых ШР, КР или КП. Сейчас у меня работает вариант, где выборка производится VBA, но выборка последовательная.
Смысл-то в том, чтоб сделать динамическую (не зависящую от количества листов), рекурсивную выборку. Вот тут пока сообразить не могу что-то (наверное уже в отпуск пора).
 
попробовал сделать в Power Query
получилось как получилось
 
Цитата
artyrH написал:
попробовал сделать в Power Queryполучилось как получилось
Решение, безусловно, интересное. Спасибо. Однако, у меня сейчас так же последовательно прописывается в таблицу, не наглядно (хоть и привычно). А мне хотелось сделать как-то более наглядно.
 
Данные в файле не очень понятны или некорректны, поэтому сделал, как смог. Может быть, что-то пригодится.
Массивная формула адреса:
Код
=ЕСЛИОШИБКА(ВПР(НАИМЕНЬШИЙ(ЕСЛИ((ДВССЫЛ(A4&"!f2:f21")>"")*(ДВССЫЛ(A4&"!b2:b21")=B$1);ШР1!A$2:A$21);СЧЁТЕСЛИ(A$4:A4;A4));ДВССЫЛ(A4&"!a2:f21");6;);"")
Формула источника:
Код
=ЕСЛИ(E3=E$3;"ШР1";ЕСЛИ(E3>"";E3;ЕСЛИ(E2="";"";"ШР1")))
 
Цитата
photon написал:
Сейчас у меня работает вариант, где выборка производится VBA, но выборка последовательная.Смысл-то в том, чтоб сделать динамическую (не зависящую от количества листов), рекурсивную выборку.
В 1-м сообщении макросов нет, файл xlsx. Покажите файл с вашим макросом, и поясните более подробно насчет:
Цитата
photon написал:
хотелось сделать как-то более наглядно
 
Цитата
Светлый написал:
Данные в файле не очень понятны или некорректны
Данные для примера. Суть в том, что 1 номер, в рамках одного ШР, КР или КП, может иметь несколько подключений, что приведено на примере номера 100 (остальные номера для массовости и наглядности примера). Надо, чтоб была возможность отследить отдельно все трассы подключений, т.е. если номер 100, в ШР1, подключен к парам 0 и 10, от которых трассы идут дальше - в другие ШР (КР, КП), то мне хочется, чтоб выводилось так (примерно):
ШР1 ... 0........
ШР2 ... 4........
(дальнейшая трасса)
(пустая строка)
ШР1 ... 10......
ШР3 ... 2.......
(дальнейшая трасса)

Это упрощенно, поскольку в ШР2, ШР3, КР1, КП1 и т.д. тоже могут быть такие же ветвления, которые так же хотелось бы выделить. Это для того, чтоб, при необходимости каких-то действий с номером, сформировать, отпечатать отчет и идти разбираться с одним листочком, а не с целой кипой (у меня это целая папка (резервная копия для меня и начальника) - каждый ШР, КР, КП на отдельном листе)
 
Цитата
_Igor_61 написал:
В 1-м сообщении макросов нет, файл xlsx
Да, я специально не адаптировал свой макрос к файлу примера. Действительный файл у меня громоздкий - очень много данных там накопилось за несколько лет эксплуатации. Да и в этом макросе нет ничего примечательного - делал несколько лет назад оперативно, когда принял связь на себя, чтоб работать без задержек (до меня связист все вел исключительно на бумаге - человек был уже в возрасте, с компьютерами не дружил :-) ).
Сейчас решил позаниматься оптимизацией алгоритмов, тем более, что существующие не отражают моих хотелок в должной мере.
 
Тестируйте:
Изменено: _Igor_61 - 23.05.2019 01:57:15
 
Цитата
_Igor_61 написал:
Тестируйте:
Во! Это похоже на то, что мне хотелось! Спасибо!
Буду испытывать в реальных условиях.
Страницы: 1
Наверх