VBA znalezienie drogi miedzy nodami oraz jej dlugosci

0

Witam,
Zadanie wydaje się że dla bardziej ambitnych bo będzie wymagać chyba trochę czasu, wiedzy a przede wszystkim pomysłu jak znaleźć odpowiednie rozwiązanie. Tak czy inaczej zaryzykuje i poproszę o pomoc kogoś bardziej obeznanego w VBA.
Walczę z tym już któryś dzień z kolei niestety z marnym skutkiem.

Dla ułatwienia wyjaśnienia problemu dodałem 2 pliki. Jeden excel, drugi pdf.
Skoroszyt excela zawiera 3 arkusze. Dwa stricte z danymi oraz 1 arkusz z layoutem. Ten sam layout został wyeksportowany do pdf, dla kogoś kto woli z nim pracować.
Layout służy jedynie do przedstawienia wizualnego siatki połączeń odcinków i nod.

W excelu znajdziecie arkusz nazwany “coordinate sheet”. Dokładnie z tego arkusza zostały wzięte dane do narysowania layoutu.

Każdy rząd w tym arkuszu reprezentuje jeden odcinek wraz z:
• Początkowym punktem nazwanym “NODE_A” wraz z koordynatami (X,Y)
• Końcowym punktem nazwanym “NODE_B” wraz z koordynatami (X,Y)
• Długością odcinka od punktu od “NODE_A” do punktu “NODE_B”

Po połączeniu wszystkich tych odcinków razem stworzymy wcześniej wspomniany layout.

Drugi arkusz nazwany został “length to update”.
W tym arkuszu każdy rząd składa się z danych takich jak nazwy nod tj.NODE_1 oraz NODE_2 , oraz znaku zapytania w miejscu w którym chciałbym żeby makro obliczyło odpowiednią długość miedzy nodami.

Cały problem w tym że ”NODE_1” oraz „NODE_2” są początkowym i końcowym punktem i większości przypadków składają się z kilku odcinków czasami napotykając na rozgałęzienia pomiędzy tymi nodami.
O ile nawet makro jest w stanie zaczynając od ”NODE_1” dotrzeć do „NODE_2” to długości całkowita miedzy tymi nodami jest błędnie wyliczona ponieważ uwzględnia również długości odcinków które są ślepymi uliczkami (tzn. zaczynają się od rozgałęzienia ale nie prowadzą do „NODE_2”).

Przeszukiwałem Internet w poszukiwaniu jakiegoś rozwiązania i znalazłem algorytm wyszukiwania drogi nazwany „binary tree search algorithm”. Jednak on nie będzie miał tu chyba zastosowania bo w moim przypadku rozgałęzienie może mieć więcej niż tylko 2 wyjścia (lewo, prawo)

P.S

O ile to ułatwienia w layoucie nie ma żadnych pętli.

0

Znalazlem rozwiazanie na innym forum. Temat do zamkniecia
Rozwiazanie, w zasadzie 2 zaprezentowane zostaly przez karedog oraz leelnich na forum z linka ponizej:
https://www.excelforum.com/excel-programming-vba-macros/1204149-find-the-way-from-nodea-to-nodeb-and-its-length.html#post4761434

1 użytkowników online, w tym zalogowanych: 0, gości: 1