Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Automatische Distanzberechnung

Automatische Distanzberechnung
23.05.2017 22:04:25
Gustavo
Hallo, gibt es eine Möglichkeit die Distanz in km zwischen zwei Postleitzahlen grob zu bestimmen? Ich habe eine Liste mit allen PLZ + Ort und meine Wunsch-PLZ. Wie ist es Möglich mir einmal alle zugehörigen Distanzen zu ziehen und dann mir an die Wunsch-PLZ anzeigen zu lassen. Jemand eine Idee?
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische Distanzberechnung
24.05.2017 05:54:42
Rainer
Hallo Gustavo,
ich nutze dazu diese Lösung:
http://analystcave.com/excel-calculate-distances-between-addresses/#Calculate_distance_between_two_addresses_using_Google_Maps_in_Excel

'Calculate Google Maps distance between two addresses
Public Function GetDistance(start As String, dest As String)
Dim firstVal As String, secondVal As String, lastVal As String
firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
secondVal = "&destinations="
lastVal = "&mode=car&language=pl&sensor=false"
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
objHTTP.Open "GET", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex. _
Global = False
Set matches = regex.Execute(objHTTP.responseText)
tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
GetDistance = CDbl(tmpVal)
Exit Function
ErrorHandl:
GetDistance = -1
End Function
und in deiner Exceltabelle schreibst du dann:

D3 =GetDistance(B3;C3)
und bekommst die Strecke in (m).
Gruß,
Rainer
Anzeige
AW: Automatische Distanzberechnung
24.05.2017 05:55:07
Rainer
Hallo Gustavo,
ich nutze dazu diese Lösung:
http://analystcave.com/excel-calculate-distances-between-addresses/#Calculate_distance_between_two_addresses_using_Google_Maps_in_Excel

'Calculate Google Maps distance between two addresses
Public Function GetDistance(start As String, dest As String)
Dim firstVal As String, secondVal As String, lastVal As String
firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
secondVal = "&destinations="
lastVal = "&mode=car&language=pl&sensor=false"
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
objHTTP.Open "GET", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex. _
Global = False
Set matches = regex.Execute(objHTTP.responseText)
tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
GetDistance = CDbl(tmpVal)
Exit Function
ErrorHandl:
GetDistance = -1
End Function
und in deiner Exceltabelle schreibst du dann:

D3 =GetDistance(B3;C3)
und bekommst die Strecke in (m).
Gruß,
Rainer
Anzeige
AW: Automatische Distanzberechnung
24.05.2017 05:55:25
Rainer
Hallo Gustavo,
ich nutze dazu diese Lösung:
http://analystcave.com/excel-calculate-distances-between-addresses/#Calculate_distance_between_two_addresses_using_Google_Maps_in_Excel

'Calculate Google Maps distance between two addresses
Public Function GetDistance(start As String, dest As String)
Dim firstVal As String, secondVal As String, lastVal As String
firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
secondVal = "&destinations="
lastVal = "&mode=car&language=pl&sensor=false"
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
objHTTP.Open "GET", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex. _
Global = False
Set matches = regex.Execute(objHTTP.responseText)
tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
GetDistance = CDbl(tmpVal)
Exit Function
ErrorHandl:
GetDistance = -1
End Function
und in deiner Exceltabelle schreibst du dann:

D3 =GetDistance(B3;C3)
und bekommst die Strecke in (m).
Gruß,
Rainer
Anzeige
AW: Automatische Distanzberechnung
24.05.2017 10:17:25
Fabian
Hallo Gustavo,
über die google api kannst du mit einer IP 2500 Abfragen am Tag machen, falls du mehr Abfragen brauchst, kannst du deinen Postleitzahlen Koordinaten zuweisen und die Strecke (Luftlinie) offline berechnen. Ist zwar nicht so genau; aber du hast kein Limit.
Gruß
Fabian
AW: Automatische Distanzberechnung
26.05.2017 14:07:12
Gustavo
Perfekt, danke dir! Kannst du zufällig auch mit dem Tool die Fahrtdauer in Minuten angeben damit?
Anzeige
AW: Automatische Distanzberechnung
27.05.2017 08:11:39
Rainer
Hallo Gustavo,
ja, kann ich.
Kannst du auch!
Klicke doch einfach auf den Link!
Gruß,
Rainer
;
Anzeige
Anzeige

Infobox / Tutorial

Automatische Distanzberechnung zwischen Postleitzahlen in Excel


Schritt-für-Schritt-Anleitung

Um die Entfernung zwischen zwei Postleitzahlen in Excel zu berechnen, kannst Du die Google Maps API verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe.

  2. Aktiviere die Entwicklertools: Gehe zu „Datei“ > „Optionen“ > „Menüband anpassen“ und aktiviere „Entwicklertools“.

  3. Füge ein neues Modul hinzu: Klicke auf „Visual Basic“ und dann im Menü auf „Einfügen“ > „Modul“.

  4. Füge den folgenden VBA-Code ein:

    'Calculate Google Maps distance between two addresses
    Public Function GetDistance(start As String, dest As String)
        Dim firstVal As String, secondVal As String, lastVal As String
        firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
        secondVal = "&destinations="
        lastVal = "&mode=driving&language=pl&sensor=false"
        Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
        URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
        objHTTP.Open "GET", URL, False
        objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
        objHTTP.send ("")
        If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
        Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)""": regex.Global = False
        Set matches = regex.Execute(objHTTP.responseText)
        tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
        GetDistance = CDbl(tmpVal / 1000) ' Umrechnung in Kilometer
        Exit Function
    ErrorHandl:
        GetDistance = -1
    End Function
  5. Verwende die Funktion in Excel: Gehe zurück zu Deiner Arbeitsmappe und schreibe in eine Zelle (z.B. D3):

    =GetDistance(B3; C3)

    Hierbei sind B3 und C3 die Zellen, die die Postleitzahlen enthalten.

  6. Drücke Enter und die Entfernung wird in Kilometern angezeigt.


Häufige Fehler und Lösungen

  • Fehler bei der API-Anfrage: Stelle sicher, dass Deine Internetverbindung aktiv ist und die Google Maps API nicht blockiert wird.
  • Falsche Werte: Überprüfe, ob die eingegebenen Postleitzahlen korrekt sind. Die API benötigt korrekte Adressen, um die Entfernung zu berechnen.
  • Limitierte API-Nutzung: Die Google API erlaubt nur eine bestimmte Anzahl an Anfragen pro Tag. Überlege, wie Du die Abfragen optimieren kannst.

Alternative Methoden

Wenn Du die Google Maps API nicht verwenden möchtest, gibt es andere Ansätze:

  • Offline-Berechnung: Berechne die Luftlinie zwischen zwei Koordinaten, die Du aus einer PLZ-Datenbank extrahieren kannst.
  • Excel-Add-Ins: Nutze Add-Ins wie „Get & Transform“ in Excel, um Daten von externen Quellen zu importieren und zu berechnen.

Praktische Beispiele

  • Beispiel 1: Berechnung der Entfernung zwischen den Postleitzahlen 10115 (Berlin) und 80331 (München):

    =GetDistance("10115", "80331")
  • Beispiel 2: Um die Fahrzeit zu berechnen, kannst Du die API auch anpassen, um die Zeit statt der Entfernung zu bekommen:

    'Ändere die Rückgabe von GetDistance zur Fahrzeit

Tipps für Profis

  • API-Key verwenden: Für umfangreiche Projekte ist es sinnvoll, einen API-Key zu beantragen, um Limits zu erhöhen und eine bessere Kontrolle zu haben.
  • Cache verwenden: Speichere bereits berechnete Distanzen, um wiederholte Anfragen zu vermeiden und die Performance zu verbessern.
  • Luftlinie berechnen: Wenn Du keine genaue Straßeninformation benötigst, kannst Du die Haversine-Formel für die Luftlinie zwischen zwei Koordinaten verwenden.

FAQ: Häufige Fragen

1. Wie viele Anfragen kann ich pro Tag an die Google Maps API senden?
Du kannst bis zu 2500 Anfragen pro Tag mit einer Standard-IP durchführen.

2. Gibt es eine Möglichkeit, die Fahrzeit in Excel zu berechnen?
Ja, Du kannst die Funktion anpassen, um die Fahrzeit ebenfalls von der API abzurufen, indem Du den Rückgabewert änderst.

3. Kann ich die Berechnung auch offline durchführen?
Ja, das ist möglich, indem Du Postleitzahlen Koordinaten zuweist und die Luftlinie oder Distanzformeln verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige