Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Entfernungen von Ort zu Ort

Entfernungen von Ort zu Ort
Ort
Hallo,
ich bitte Euch wieder einmal um Eure Hilfe.
In meiner Tabelle sind waagrecht und senkrecht Orte eingetragen.
Beim Schnittpunkt sollte über eine Abfrage aus dem Internet die Entfernung von Ort zu Ort in Straßenkilometern und mit der kürzesten Route eingetragen werden.
Auch bei Google habe ich noch nichts passendes gefunden. Vielleicht kann mir jemand weiterhelfen.
Hier noch die Tabelle:
https://www.herber.de/bbs/user/64820.xls
Besten Dank und Servus, Walter
AW: Entfernungen von Ort zu Ort
02.10.2009 01:07:16
Ort
Hallo Walter
Schau Dir mal diese Datei an. Vielleicht kannst Du die anpassen.
https://www.herber.de/bbs/user/64825.xls
Gruß aus dem Sauerland
Jens
Anzeige
AW: Entfernungen von Ort zu Ort
02.10.2009 08:13:38
Ort
Hallo,
Danke Euch beiden für die Vorschläge. für mein Vorhaben ist allerdings nichts passendes dabei bzw. bin ich nicht in der Lage, etwas für meine Tabelle anzupassen.
Einen schönen Tag noch und Servus, Walter
AW: Entfernungen von Ort zu Ort
05.10.2009 11:29:15
Ort
Hi Walter,
woran scheitert das denn?
cu, Bernd
OT: Nachtrag z.bereits abgelegten CF-Thema
06.10.2009 00:08:40
Luc:-?
Leider kann man nicht mehr wie früher dem noch was „nachschieben" (nicht mal 'nen Link!), Bernd,
weshalb ich das jetzt hier tun will, da ich noch etwas vorbereitet hatte, was ich noch „loswerden" möchte... ;-)
Na, da habe ich wohl einen Nachnutzer deines damaligen Versuchs entdeckt! Mir war auch noch so, als ob dort schon früher mal was zu diesem Thema gestanden hätte...
Jedenfalls hatte ich auch schon mal 2008 an diesem Thema laboriert und bereits Teilerfolge erzielt, aber das dann erst mal vor mir her geschoben. Inzwischen habe ich mich damit aber ernsthaft ausein­andergesetzt. Deinen Lösungsansatz über Namen fand ich interessant, weshalb ich das mal weiter getestet habe. Leider gibt's da ein Riesen­problem — statt einer wdn (f.udFktt) gleich 2 Auto­Relativ­Adress­Anpassungen wirksam, was das Ganze sehr kompliziert macht, wenn man auch die BedingtFmln darstellen will. Ansonsten habe ich inzwischen mitbekommen, was das Einbringen der BedingtFml in RefersToR1C1Local bewirkt... In einer „frischen" Datei ohne die bei mir übliche Belastung durch x andere udF verhält sich xl9 ähnlich wie xl12 — die Namen tauchen nur sehr temporär im Namensspeicher auf und sind dann wieder verschwunden, müssen also nicht gelöscht wdn; Application.ReferenceStyle hat darauf wie vermutet keinerlei Einfluss und kann entfallen. So fkt auch alles relativ stabil und recht schnell, obwohl immer noch - bei eingeschalteter Automatik - mindestens 60 ineinander­geschachtelte Teildurch­läufe erfolgen; vermutl wird der gesamte NameSpace in Anspruch genommen!
Instabil sind in den unten gezeigten „Problem-Nuclei" nur die Varianten, die eine Adress­korrektur benötigen, also die Darstellung von Bedingt­FormatFmln, da hier meine udF AList zum Einsatz kommt, die zwangsläufig mit dem Application.Caller (bzw ersatzweise ActiveCell) arbeiten muss. Das ist dann alles nur bei ausgeschalteter Automatik sehr relativ stabil...
Inwieweit die Verwendung regulärer Namen in Bedingt­FormatFmln deine Methode negativ beeinflussen könnte, habe ich noch nicht untersucht. Wäre möglich! Ansonsten habe ich für die Namensisolation aus Fmln (ebenso wie für anderes) auch eine udF; die enden alle auf ...List, weil sie quasi listen- bzw aufzählungs­ähnlichen Text liefern, der dann auch entsprechend weiter­verarbeitet wdn könnte — A..., F..., H..., N..., P..., nur XList ist was anderes... ;-)
Außerdem kann ich mit 2 anderen udF gezielt Namens­bezüge auslesen, davon einmal adress­berichtigt (mit udF-interner, „ungekapselter" Methode).
Ansonsten habe ich für meine Varianten (wie bereits dargelegt) die Evaluierung relevanter Teile der eingegebenen GesamtFml genutzt, weshalb ich auch ...Caller benötigt habe, was das Ganze (bisher) destabilisiert..., also Set ac = Application.Caller...Evaluate("FConForm(" & PartOf(ac.Formula, "FConForm(", ")") & ")"), weshalb actCellForm als 2.Argument auch eine solche Konstruktion enthalten muss, die entsprechend leicht zu isolieren ist und mittels „Evaluierung" die englische(!) Formatfml liefert. Zuvor habe ich so etwas einfach mit ac.Calculate oder vglbaren Ops realisiert (dabei fiel mir der „Engl-Effekt" zuerst auf!), das ist aber sehr proble­matisch - kann unerwünschte Neben­effekte nachsich­ziehen...
Fazit: Es gibt (für nichtengl xl) wohl (noch) keine wirklich 100%ig zuverlässige Methode, die alles abdeckt. Jede hat Vor- und Nachteile! Aber zum Abschluss der auch für mich recht langen Rede mein kleines Experiment auf der Basis von weiterentwickelten Nuclei deiner Methode...
 ABC
1#DIV/0!⇒ISTFEHLER(A1) ⇒TestCFo(A1)
2xFett ⇒TestCFa(A1;"sst")
3xRot ⇒TestCFa(A1;3)
4xRot ⇒TestCFa(A1;"rfn")
5xKreidegelb ⇒TestCFa(A1;9)
6Anmerk:instabil wg Adresskorrektur m.AList

Eine adress­berichtigte engl Bedingt­Fml auszugeben ist mir nicht gelungen, weil die Ausgangswerte für AList durch die Namens­manipulation schon um 2 Zeilen nach oben verschoben waren, so dass kein vernünftiges Ergebnis zustande kam. Bei meinen wackligen Lösungen klappt das aber, wenn auch bei Berechnungs­Automatik mit wechselnden Adressen, weil sich alles ggseitig beeinflusst... Überlege nun, ob ich deine Idee für die Format­Eigenschaften verwende, wäre wohl sicherer... ;-)
Und hier noch die beiden vbAtoms, die viell die Basis deiner Weiterarbeit an diesem Problem _ bilden könnten...

Function TestCFo(ByVal QZ As Range)
Const tnon As String = "TestCFml"
Dim cfl As String, p, qv
On Error Resume Next
With QZ.FormatConditions(1)
Names.Add Name:=tnon, RefersToR1C1Local:=.Formula1
If Evaluate(tnon) Then
cfl = .Formula1
qv = AList(cfl, QZ, , , , , 0)
For Each p In Pair(Split(qv(0), " "), Split(qv(1), " "))
cfl = Replace(cfl, p(0), p(1))
Next p
TestCFo = cfl
Else: TestCFo = QZ.FormulaLocal
End If
End With
Set QZ = Nothing
End Function
Function TestCFa(ByVal QZ As Range, Optional QZFE)
Const tnon As String = "TestCFrb"
On Error Resume Next
With QZ.FormatConditions(1)
Names.Add Name:=tnon, RefersToR1C1Local:=.Formula1
Select Case QZFE
Case 0, "sst", "fst"
If Evaluate(tnon) Then TestCFa = .Font.FontStyle Else TestCFa = QZ.Font.FontStyle
Case 1, "sfx", "fcx"
If Evaluate(tnon) Then TestCFa = .Font.ColorIndex Else TestCFa = QZ.Font.ColorIndex
Case 2, "sfa", "fco"
If Evaluate(tnon) Then TestCFa = .Font.Color Else TestCFa = QZ.Font.Color
Case 3, "sfn", "fcn"
If Evaluate(tnon) Then TestCFa = .Font.Color Else TestCFa = QZ.Font.Color
TestCFa = ColNtoN(TestCFa)
Case 4, "rfx", "bcx"
If Evaluate(tnon) Then TestCFa = .Borders.ColorIndex Else TestCFa = QZ.Borders. _
ColorIndex
Case 5, "rfa", "bco"
If Evaluate(tnon) Then TestCFa = .Borders.Color Else TestCFa = QZ.Borders.Color
Case 6, "rfn", "bcn"
If Evaluate(tnon) Then TestCFa = .Borders.Color Else TestCFa = QZ.Borders.Color
TestCFa = ColNtoN(TestCFa)
Case 7, "zfx", "icx"
If Evaluate(tnon) Then TestCFa = .Interior.ColorIndex Else TestCFa = QZ.Interior. _
ColorIndex
Case 8, "zfa", "ico"
If Evaluate(tnon) Then TestCFa = .Interior.Color Else TestCFa = QZ.Interior.Color
Case 9, "zfn", "icn"
If Evaluate(tnon) Then TestCFa = .Interior.Color Else TestCFa = QZ.Interior.Color
TestCFa = ColNtoN(TestCFa)
End Select
End With
Set QZ = Nothing
End Function
Natürlich enthalten die auch ein paar „Eigenheiten" in Form von udFktt*, die aber im Falle von ColNtoN verzichtbar sind. AList dagg wird wirklich benötigt → nachbauen [gibt da ja was von JensF, aber das kennst du als Aktiver des „liebevoll moderierten" Forums ja sicher... ;-) ]! Mit Pair hast du hier ein Bsp für einen anderen merk- bzw denkwürdigen Effekt, der in vbKonstrukt­Köpfen auftreten kann (denk nicht, dass das hier irgendjemand interessiert hätte!)...
So, das war's meinerseits! Nun kommt (auch dadurch!) auf mich einiges an udF-Optimierungs­arbeit zu...
Gruß+viel Spaß, Luc :-?
*Nebenbei, so sehen fast alle meine udF aus, nur meist viel länger... ;-)
Besser informiert mit...
Anzeige
AW: OT: Nachtrag z.bereits abgelegten CF-Thema
06.10.2009 08:54:17
bst
Morgen Luc,
Hmm, bin mir noch nicht sicher ob ich das auch verstanden habe, ich denke nochmal darüber nach ;-)
Danke erstmal für die ausführlichen Infos.
Einen schönen Tag noch,
Bernd
Danke dito! Naja, ich ging natürlich nicht...
06.10.2009 18:56:28
Luc:-?
...davon aus, dass das jeder versteht, Bernd,
aber jemand der sich mit dieser Problematik befasst schon... ;-)
Viell noch ein paar Nachbemerkungen:
1. Es ist schon ein interessanter, wenn auch erklärbarer, Effekt, dass es bei direkt erfolgender Namens­auswertung (If Evaluate(tnon) Then) offensichtlich zu keinerlei Adressanpassung kommt; die xlAnpassungs­automatik scheint die Ausgabezelle an dieser Stelle (quasi im „xl/vbHyperraum") noch nicht verifizieren zu können. Sobald die BedingtFml aber einer Variablen zugewiesen wird (also in den „xl/vbNormalraum" eintritt), wird die Automatik wirksam (cfl = .Formula1); hier allerdings nur mit der BedingtFormat­Adress­Anpassung. Eine US-original-notierte BedingtFml müsste man aber so mit einem zusätzl Evaluate ebenfalls direkt aus dem (virtuellen) Namensbezug gewinnen, was, möglicher­weise auf Grund der Mehrfach­durchläufe (auch bei ausgeschalteter Automatik!), zu einer (schrittweisen?) Adress­anpassung in wahrscheinl nur 1 Richtung (also [hier] Zeile oder Spalte) führt. Bei Variablen­zuweisung entstünde dann uU (habe ich nicht direkt untersucht, nur unter AList-Einsatz!) eine andere Adress­anpassung als sonst. So ist das natürlich für die Korrektur mittels AList unbrauchbar.
2. AList arbeitet quasi mit Fml-Adress­Parsing. Dabei wird intern die udF MaskOn benutzt, die diverse Bestandteile aus Texten isolieren kann, u.a. nur Bst, Zff, Adressartiges. Deren Ergebnis wird abhängig von der xlVs verifiziert und auf verschiedene Weise ausgegeben (letztes Argument, hier eine [1,0]-Matrix aus Adresslisten {unkorr;korrig}). Diese wdn in Feld-Variants gesplittet und mit udF Pair zu einer Matrix aus Adress-Paaren {unkorr.korrig} vereinigt. Die Notation an dieser Stelle bewirkt den Aufruf als Paar [p(0), p(1)], was die Korrektur sehr einfach gestaltet...
3. Natürlich habe ich auch für den CF-Typ 1 (xlCellValue) eine etwas andere Lösung als du, sogar 2...
Var1: Alle Operatorangaben wdn mit Unicode-Zeichen allgemein-mathematisch symbolisiert und so als Fml dargestellt.
Var2: Es wird eine xl-evaluierbare VglFml aus absoluter VglZell-Adresse, _ xlOperatorsymbol und Fml erzeugt. Bei 2 Fmln (Between!) ist die Umwandlung komplexer, obwohl ich auch für diese Vglsart eine udF (Between) habe, die ich aber nur bei Sekundär­Umwand­lungen (aus Var1, in einer alternativen Zelle-Eigenschaften­Ermittlungsfkt [CellContIn]) eingesetzt habe. Deshalb frage ich im Select Case-Konstrukt auch nur 3x wie in diesem Ausschnitt aus FConForm zu sehen ist...

bfo = .Operator
Select Case bfo
Case xlBetween
If loc Then
FConForm = "=UND(" & Bereich.Address & ">=" & IIf(Left(.Formula1, 1) = "=", _
Mid(.Formula1, 2), .Formula1) & ";" & Bereich.Address & "=" & IIf(Left(.Formula1, 1) = "=", _
Mid(.Formula1, 2), .Formula1) & "," & Bereich.Address & "" & _
IIf(Left(.Formula2, 1) = "=", Mid(.Formula2, 2), .Formula2) & ")"
Else: FConForm = "=OR(" & Bereich.Address & "" & _
IIf(Left(.Formula2, 1) = "=", Mid(.Formula2, 2), .Formula2) & ")"
End If
Case Else
FConForm = "=" & Bereich.Address & Split(fcop, " ")(.Operator - 3) & _
IIf(Left(.Formula1, 1) = "=", Mid(.Formula1, 2), .Formula1)
End Select

4. Aus dem allen ist gewiss zu erkennen, dass es sich bei meinen udFktt idR um keine Insel­lösungen, sondern generell um ein ganzes Paket inein­ander­greifender universeller Fktionalitäten handelt*. Das entspricht auch am ehesten den Intentionen der xlMacher, denen ich gefolgt bin, indem ich mich intensiv mit udFktt beschäftigt habe...
*...was zumeist (auch wg ihres Umfangs!) eine Komplett-Publizierung verhindert!
Gruß Luc :-?
Anzeige
AW: Entfernungen von Ort zu Ort
06.10.2009 16:20:15
Ort
Hallo Bernd,
bei den von Dir angeführten Links wird von einem anderen Tabellenaufbau als dem meinen ausgegangen.
Für mich als Laie ist es unmöglich, den Code so zu verändern, dass die Kilometer zu meinem Tabellenaufbau ausgelesen werden.
Hätte ja sein können, dass schon mal jemand so eine (ich nenne es mal ..) Kreuztabelle in Excel erstellt hat.
Ich danke Dir jedenfalls für Deine Hilfe.
Servus, Walter
AW: Entfernungen von Ort zu Ort
06.10.2009 20:18:39
Ort
Hallo Anton,
das ist ja klasse, so hatte ich mir das vorgestellt.
1 Frage noch:
ist es möglich die km wegzulassen damit nur noch eine Zahl eingetragen wird, mit der man dann weiter rechnen kann.
Jedenfalls danke ich Dir für die spitzen Lösung.
Servus, Walter
Anzeige
AW: Entfernungen von Ort zu Ort
06.10.2009 21:06:01
Ort
Hallo Walter,
ersetze:
Tabelle1.Cells(j, i).Value = teile(0)
durch:
Tabelle1.Cells(j, i).Value = Replace(teile(0), "km", "")
mfg Anton
Tip Top, Besten Dank und Servus, Walter
06.10.2009 21:32:27
WalterK
.
Jetzt gibt es doch noch ein Problem,...
06.10.2009 22:07:43
WalterK
Hallo Anton,
ich habe es 2mal mit ca 100 Ortschaften versucht, beide male allerdings war nach ca 1000 eingetragenen Entfernungen Schluss, die Datei hängte sich dann auf. Es kam aber auch keine Fehlermeldung.
Gibt es hierfür vielleicht noch eine Lösung?
Servus, Walter
AW: Jetzt gibt es doch noch ein Problem,...
07.10.2009 22:17:27
Anton
Hallo Walter,
ersetze:

IEApp.Navigate "http://maps.google.de/maps?saddr=" & Tabelle1.Cells(1, i).Value & _
               "&daddr=" & Tabelle1.Cells(1, j).Value & "&output=html"
Application.StatusBar = "Start-> " & Tabelle1.Cells(1, i).Value & _
                        " Ziel-> " & Tabelle1.Cells(1, j).Value

durch:

IEApp.Navigate "http://maps.google.de/maps?saddr=" & Tabelle1.Cells(1, i).Value & _
               "&daddr=" & Tabelle1.Cells(j, 1).Value & "&output=html"
Application.StatusBar = "Start-> " & Tabelle1.Cells(1, i).Value & _
                        " Ziel-> " & Tabelle1.Cells(j, 1).Value

mfg Anton
Anzeige
AW: Jetzt gibt es doch noch ein Problem,...
07.10.2009 23:28:01
walterK
Hallo Anton,
auch mit dem geänderten Code bleibt die Datei hängen, jedes mal an einer anderen Stelle. Beim vorletzten Versuch war die Tabelle fast fertig berechnet, nachdem sie sich aufgehängt hatte, war natürlich alles wieder weg.
Vielleicht liegt es auch an meinem PC?
Ich habe die Datei mal eingestellt.

Die Datei https://www.herber.de/bbs/user/64949.xls wurde aus Datenschutzgründen gelöscht

Danke und Servus, Walter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige