'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).
'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).
'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).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:
Öffne Excel und erstelle eine neue Arbeitsmappe.
Aktiviere die Entwicklertools: Gehe zu „Datei“ > „Optionen“ > „Menüband anpassen“ und aktiviere „Entwicklertools“.
Füge ein neues Modul hinzu: Klicke auf „Visual Basic“ und dann im Menü auf „Einfügen“ > „Modul“.
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
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.
Drücke Enter und die Entfernung wird in Kilometern angezeigt.
Wenn Du die Google Maps API nicht verwenden möchtest, gibt es andere Ansätze:
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
Haversine-Formel
für die Luftlinie zwischen zwei Koordinaten verwenden.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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen