Routenberechnung in Excel
Guten morgen,ich habe meiner Meinung nach ein interressantes Problem:
Ich möchte in Excel ein Programm erstellen welches Wegpunkte abfragt! Und zwar geht es um ein Spiel in dem man mehrere Orte von festen Stellen aus bereisen kann z.B.
Von Ort A kann ich nach B - C - D reisen
Von Ort B aber erst nach E und F usw.
ist es möglich ein Programm zu entwerfen (auf einfache art und weise), wo ich angeben kann: Startort: Z.B aus eine Dropdownliste ORT A und Zeilort ORT F und Excel listet mir dann auf, das ich von A aus nach B reisen muss und von B aus an mein Ziel F komme?? So was muss möglich sein nur mir ist bisher nichts gescheitet eingfallen. Hoffe einer von euch hat eine Idee oder Lösung dafür.
Achso, optinal wäre es vll noch gut wenn man den einzelnen Wepunkten kosten zuweisen könnte bzw. das man eine alternative route errechen lassen kann.
vielen dank schoneinmal fürs Kopfzerbrechen
mfg molto
Ich möchte in Excel ein Programm erstellen welches Wegpunkte abfragt! Und zwar geht es um ein Spiel in dem man mehrere Orte von festen Stellen aus bereisen kann z.B.
Von Ort A kann ich nach B - C - D reisen
Von Ort B aber erst nach E und F usw.
ist es möglich ein Programm zu entwerfen (auf einfache art und weise), wo ich angeben kann: Startort: Z.B aus eine Dropdownliste ORT A und Zeilort ORT F und Excel listet mir dann auf, das ich von A aus nach B reisen muss und von B aus an mein Ziel F komme?? So was muss möglich sein nur mir ist bisher nichts gescheitet eingfallen. Hoffe einer von euch hat eine Idee oder Lösung dafür.
Achso, optinal wäre es vll noch gut wenn man den einzelnen Wepunkten kosten zuweisen könnte bzw. das man eine alternative route errechen lassen kann.
vielen dank schoneinmal fürs Kopfzerbrechen
mfg molto
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 134347
Url: https://administrator.de/contentid/134347
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
8 Kommentare
Neuester Kommentar
öhm wenn ich nach deiner Frage gehe ob es möglich ist ein Programm zu entwerfen kann ich nur antworten: ja xD xD xD
Tabelle mit 3 Spalten: Ort xyz ; Kosten ; Konnektivität zu
z.B.:
Ort A;1;B,C,E
Ort B;2;D
Ort C;1;D
Ort D;3;E
Ort E;4;
Wenn man nun von A nach E will gibt es also folgende Varianten: (vorausgesetzt man bewegt sich nur in eine Richtung und nicht im Kreis ^^)
A-E --> kosten 4
A-B-D-E --> kosten 6
A-C-D-E --> kosten 5
Dann in VBA ein Userform basteln, wo du Start und Ziel eingibst und dann musste dir nen Algo einfallen lassen wie du von Zelle zu Zelle spingst und dir die Daten dann irgendwie ausgibst.
Die Tabelle kannst du um so viele Parameter, Nebenbedingungen erweitern wie du lustig bist. =)
Tabelle mit 3 Spalten: Ort xyz ; Kosten ; Konnektivität zu
z.B.:
Ort A;1;B,C,E
Ort B;2;D
Ort C;1;D
Ort D;3;E
Ort E;4;
Wenn man nun von A nach E will gibt es also folgende Varianten: (vorausgesetzt man bewegt sich nur in eine Richtung und nicht im Kreis ^^)
A-E --> kosten 4
A-B-D-E --> kosten 6
A-C-D-E --> kosten 5
Dann in VBA ein Userform basteln, wo du Start und Ziel eingibst und dann musste dir nen Algo einfallen lassen wie du von Zelle zu Zelle spingst und dir die Daten dann irgendwie ausgibst.
Die Tabelle kannst du um so viele Parameter, Nebenbedingungen erweitern wie du lustig bist. =)
Also auch wenn H41mSh1C0R's Tabellenschema nicht ganz sauber ist. Könnte man das dann eventuell mit einem synchronisierten Subquery lösen.
Sprich du lagerst die Tabelle mit den Konnektivitäten (und Kosten etc) aus und fragst dann im Prinzip ab, wie man von Ort A nach C kommt. Wobei er in dem Subquery immer nur die Folgeorte betrachtet /bearbeitet.
Also z.B. zuerst von A nach B, danach von B nach C usw.
Wenn du fertig bist, könntest du ja mal kurz zeigen, wie dus gelöst hast!
ciao
Sprich du lagerst die Tabelle mit den Konnektivitäten (und Kosten etc) aus und fragst dann im Prinzip ab, wie man von Ort A nach C kommt. Wobei er in dem Subquery immer nur die Folgeorte betrachtet /bearbeitet.
Also z.B. zuerst von A nach B, danach von B nach C usw.
Wenn du fertig bist, könntest du ja mal kurz zeigen, wie dus gelöst hast!
ciao
Was stimmt an der Tabellenstruktur nicht?
1. 1 Tabelle
2. Daten sauber abgelegt in der Tabelle
3. (fast)jede Strecke kann abgebildet werden (in der Art wie die Tabelle oben steht kommt man nach der Logik nicht von E retour)
Man könnte vielleicht noch eine Spalte einziehen um jedem Punkt dem vorgänger und nachfolgerpunkt zuzuordnen.
Danach ist das dann reine Programmlogik wie man von Punkt zu Punkt springt und sich die Parallel möglichen Strecken anzeigt/abspeichert usw.
Erläutere mal bitte: "synchronisierten Subquery"
grüße
also von meiner Seite:
Ich bin immer bestrebt wenn ich Excel benutze, auch die Daten in Tabellenform zu halten, also so wenig es geht die Daten rein im Algo zu halten. Das hat zwar Performante Nachteile, aber wenns wo kracht sieht man anhand der Tabellentruktur sofort wo es hängt.
Tabelle 1 die Strecken/Wegedaten
Tabelle 2 die Ergebnisse der Wegesuche
In Tabelle 1 müssen folgende Sachen rein:
- Wegepunktname
- mit welchen Wegepunkten ist dieser verbunden (das kannst du über einen String machen der mit einem Delimiter getrennt ist oder du schreibst für jede Konnektivität eine extra Zeile)
Diese beiden Kerninformationen sind im Grunde alles was du brauchst.
- Kosten für Fahrtstrecken wie andere Parameter für die Wegepunkte kannst du beliebig als Spalte anfügen, da ist deiner Fantasie keine Grenze gesetzt
Beispiel mal einfacher:
Streckennetz
A -- B -- C -- D
A -------- C
Wegpunkte: A, B, C, D
Darstellung in der Tabelle
Wegpunkt Kosten davor danach
A 1 0 B
A 2 0 C
B 1 A C
C 1 B D
C 1 A D
D 1 C 0
Wegesuche von A nach C:
Die Suche müsste dir also die Strecken A - B -C und A - C ausspucken.
Wie machen wir das nun?
Jetzt musst du nachdem du im Userform 2 Wegpunkte ausgesucht hast, von denen du die Streckeninformation und Kosteninformation haben willst folgendes machen:
1. Prüfe wie oft dein Startpunkt als Wegpunkt auftaucht -> lege soviele Arrays an, in dem Beispielfall legst du 2 Arrays an
Jedes Array stellt somit einen Pfad dar, welcher nicht zwangsweise auch zum Ziel führen muss, dazu aber später. Alternativ kannst du statt in Arrays zu speicher auch einfach die betreffende Zeile von Tabelle 1 in Tabelle 2 speichern
2. nimm das erste Array und schaue ob der Zielwegpunkt vor oder hinter dem Startzielpunkt liegt.
- egal ob davor oder dahinter, jenachdem welche Richtung arbeitest du mit der Information in der Spalte "davor" oder "danach"
wir nehmen jetzt mal die Richtung von "dahinter".
A 1 0 B
B 1 A C
C 1 A D
3. In der Spalte "dahinter" steht B also suchen wir den Wegpunkt B und verfahren mit diesem Punkt analog und schauen was "dahinter" kommt.
4. nebenbei wird von Schritt zu Schritt immer die Spalte Kosten ausgelesen und in einer entsprechenden Variable zu dem Array gespeichert oder statt Array und Variablen kannst du auch die Werte live in Tabelle 2 mit Struktur deiner Wahl ablegen.
5. Wenn du nun Schritt 3 - 4 solange wiederholen bis wir C erreicht haben oder einen Endpunkt der mit "0" gekennzeichnet ist geht der Weg weiter.
- wenn "0" auf dem Weg vorkommt ohne das dein Zielpunkt dabei war, hast du dich verfahren ^^ und diese Strecke kann ignoriert/gelöscht werden
6. ist auf dem Weg der Zielpunkt vorgekommen, kannst du anhalten und bei 2. wieder anfangen mit dem nächsten Array, also der 2. oder 3. oder x-ten Streckenvariante
7. hast du alle Arrays durch kannst du die Werte ausgeben, nach Struktur deiner Wahl. =)
hoffe dich nun nicht gänzlich verwirrt zu haben =).
Ich bin immer bestrebt wenn ich Excel benutze, auch die Daten in Tabellenform zu halten, also so wenig es geht die Daten rein im Algo zu halten. Das hat zwar Performante Nachteile, aber wenns wo kracht sieht man anhand der Tabellentruktur sofort wo es hängt.
Tabelle 1 die Strecken/Wegedaten
Tabelle 2 die Ergebnisse der Wegesuche
In Tabelle 1 müssen folgende Sachen rein:
- Wegepunktname
- mit welchen Wegepunkten ist dieser verbunden (das kannst du über einen String machen der mit einem Delimiter getrennt ist oder du schreibst für jede Konnektivität eine extra Zeile)
Diese beiden Kerninformationen sind im Grunde alles was du brauchst.
- Kosten für Fahrtstrecken wie andere Parameter für die Wegepunkte kannst du beliebig als Spalte anfügen, da ist deiner Fantasie keine Grenze gesetzt
Beispiel mal einfacher:
Streckennetz
A -- B -- C -- D
A -------- C
Wegpunkte: A, B, C, D
Darstellung in der Tabelle
Wegpunkt Kosten davor danach
A 1 0 B
A 2 0 C
B 1 A C
C 1 B D
C 1 A D
D 1 C 0
Wegesuche von A nach C:
Die Suche müsste dir also die Strecken A - B -C und A - C ausspucken.
Wie machen wir das nun?
Jetzt musst du nachdem du im Userform 2 Wegpunkte ausgesucht hast, von denen du die Streckeninformation und Kosteninformation haben willst folgendes machen:
1. Prüfe wie oft dein Startpunkt als Wegpunkt auftaucht -> lege soviele Arrays an, in dem Beispielfall legst du 2 Arrays an
Jedes Array stellt somit einen Pfad dar, welcher nicht zwangsweise auch zum Ziel führen muss, dazu aber später. Alternativ kannst du statt in Arrays zu speicher auch einfach die betreffende Zeile von Tabelle 1 in Tabelle 2 speichern
2. nimm das erste Array und schaue ob der Zielwegpunkt vor oder hinter dem Startzielpunkt liegt.
- egal ob davor oder dahinter, jenachdem welche Richtung arbeitest du mit der Information in der Spalte "davor" oder "danach"
wir nehmen jetzt mal die Richtung von "dahinter".
A 1 0 B
B 1 A C
C 1 A D
3. In der Spalte "dahinter" steht B also suchen wir den Wegpunkt B und verfahren mit diesem Punkt analog und schauen was "dahinter" kommt.
4. nebenbei wird von Schritt zu Schritt immer die Spalte Kosten ausgelesen und in einer entsprechenden Variable zu dem Array gespeichert oder statt Array und Variablen kannst du auch die Werte live in Tabelle 2 mit Struktur deiner Wahl ablegen.
5. Wenn du nun Schritt 3 - 4 solange wiederholen bis wir C erreicht haben oder einen Endpunkt der mit "0" gekennzeichnet ist geht der Weg weiter.
- wenn "0" auf dem Weg vorkommt ohne das dein Zielpunkt dabei war, hast du dich verfahren ^^ und diese Strecke kann ignoriert/gelöscht werden
6. ist auf dem Weg der Zielpunkt vorgekommen, kannst du anhalten und bei 2. wieder anfangen mit dem nächsten Array, also der 2. oder 3. oder x-ten Streckenvariante
7. hast du alle Arrays durch kannst du die Werte ausgeben, nach Struktur deiner Wahl. =)
hoffe dich nun nicht gänzlich verwirrt zu haben =).
Hallo H41mSh1C0R,
Ich hab das jetzt eher auf Datenbankebene gesehen, und da hättest du mit deinem Tabellenvorschlag
"Tabelle mit 3 Spalten: Ort xyz ; Kosten ; Konnektivität zu
z.B.:
Ort A;1;B,C,E
Ort B;2;D
Ort C;1;D
Ort D;3;E
Ort E;4;"
die erste NF (sprich: alle Daten müssen atomar sein) nicht beachtet.
Daher hätte ich es eher so aufgebaut, wie o.g Struktur. Die sync. Subqueries kommen auch wieder aus der DB Welt und ich weiß leider nicht, in wie weit diese jetzt auf Excel anwendbar sind, von daher "zieh" ich mal mein Vorschlag zurück. Ansonsten ist das nichts anderes, als ein Subquery für jedes Tupel "einzeln/speziell" ausgeführt wird.
Ciao
Ich hab das jetzt eher auf Datenbankebene gesehen, und da hättest du mit deinem Tabellenvorschlag
"Tabelle mit 3 Spalten: Ort xyz ; Kosten ; Konnektivität zu
z.B.:
Ort A;1;B,C,E
Ort B;2;D
Ort C;1;D
Ort D;3;E
Ort E;4;"
die erste NF (sprich: alle Daten müssen atomar sein) nicht beachtet.
Daher hätte ich es eher so aufgebaut, wie o.g Struktur. Die sync. Subqueries kommen auch wieder aus der DB Welt und ich weiß leider nicht, in wie weit diese jetzt auf Excel anwendbar sind, von daher "zieh" ich mal mein Vorschlag zurück. Ansonsten ist das nichts anderes, als ein Subquery für jedes Tupel "einzeln/speziell" ausgeführt wird.
Ciao
Moin moltova,
falls dich meine Ansicht zu deiner Frage auch interessiert:
1. Das Themenfeld "Problem des Handlungsreisenden", "Kritischer Pfad", Kombinatorik, Permutationen und Graphentheorie ist definitiv nicht dafür geeignet, eben mal im Vorbeigehen mit einer Excel-Formel in Feld A23 abgefrühstückt zu werden. Wenn du da etwas Handwerkliches machen willst, mit welchem Werkzeug auch immer, dann dann musst du dich schon ernsthaft mit der Materie auseinandersetzen (--> "ernsthaft auseinandersetzen" ist ungleich "mal sehen, wie weit ich durch Ausprobieren komme").
2. Ich will nicht ausschließen, dass jemand, der die Theorie und die Modelle kennt, eine Berechnung auch zur Not mit einer Tabellenkalkulation umsetzen kann. Schließlich haben auch Menschen in selbstgebauten Doppeldecker-Flugdrachen den Rhein überquert. (Aber insgesamt gesehen war das eine Minderheit)
3. Die Excel-EntwicklerInnen selbst haben auch (okay, etwas verschämt ganz am äußersten Rand) zwei oder drei Makro-Schnupper-Funktiönchen bereitgestellt, die in der Richtung hilfreich sein könnten ( FAKULTÄT(), KOMBINATIONEN() und das wars eigentlich). Schau zum Spaß mal in die Excel-Hilfe bei KOMBINATIONEN(), dann ahnst du eventuell, was ich mit Punkt 1 meine.
4. Konsequenz aus alledem wäre von meiner Seite aus ein klares "Finger wech!" mit dem Hintertürchen: "Du könnstest ja mal suchmaschinen, ob eventuell einer, der etwas von dem Thema versteht, etwas programmiertechnisch zusammengeharkt und als Freeware bereitgestellt hat".
Grüße
Biber
falls dich meine Ansicht zu deiner Frage auch interessiert:
1. Das Themenfeld "Problem des Handlungsreisenden", "Kritischer Pfad", Kombinatorik, Permutationen und Graphentheorie ist definitiv nicht dafür geeignet, eben mal im Vorbeigehen mit einer Excel-Formel in Feld A23 abgefrühstückt zu werden. Wenn du da etwas Handwerkliches machen willst, mit welchem Werkzeug auch immer, dann dann musst du dich schon ernsthaft mit der Materie auseinandersetzen (--> "ernsthaft auseinandersetzen" ist ungleich "mal sehen, wie weit ich durch Ausprobieren komme").
2. Ich will nicht ausschließen, dass jemand, der die Theorie und die Modelle kennt, eine Berechnung auch zur Not mit einer Tabellenkalkulation umsetzen kann. Schließlich haben auch Menschen in selbstgebauten Doppeldecker-Flugdrachen den Rhein überquert. (Aber insgesamt gesehen war das eine Minderheit)
3. Die Excel-EntwicklerInnen selbst haben auch (okay, etwas verschämt ganz am äußersten Rand) zwei oder drei Makro-Schnupper-Funktiönchen bereitgestellt, die in der Richtung hilfreich sein könnten ( FAKULTÄT(), KOMBINATIONEN() und das wars eigentlich). Schau zum Spaß mal in die Excel-Hilfe bei KOMBINATIONEN(), dann ahnst du eventuell, was ich mit Punkt 1 meine.
4. Konsequenz aus alledem wäre von meiner Seite aus ein klares "Finger wech!" mit dem Hintertürchen: "Du könnstest ja mal suchmaschinen, ob eventuell einer, der etwas von dem Thema versteht, etwas programmiertechnisch zusammengeharkt und als Freeware bereitgestellt hat".
Grüße
Biber