Entfernung in Excel berechnen

In diesem Artikel wird gezeigt, wie Sie Bing Maps verwenden, um die Entfernung zwischen zwei Punkten in einer Tabelle zu berechnen.

Wenn Sie es eilig haben, können Sie die Arbeitsmappe herunterladen und schnell die Entfernung zwischen zwei Adressen bestimmen, indem Sie ihre Adressen in eine Excel-Tabelle eingeben. Klicken Sie hier, um den Entfernungsrechner herunterzuladen.

API Schlüssel für Bing Maps generieren

Wir müssen zuerst Ihren Bing Maps-API-Schlüssel abrufen, um diesen später im Code verwenden zu können.

Befolgen Sie die Schritte hier, um einen Schlüssel zu erstellen.

VBA Excel-Code für die Berechnung der Entfernung

Um den Visual Basic-Editor in Excel zu öffnen, drücken Sie ALT + F11 (halten Sie die ALT-Taste gedrückt und drücken Sie die Taste F11). Dadurch wird ein separates Fenster für den Visual Basic-Editor geöffnet.

Klicken Sie im Visual Basic-Editor auf Einfügen > Modul

Kopieren Sie nun den gesamten Code unten und fügen Sie ihn in Module1 in Ihrer Arbeitsmappe ein.

Public Function GetDistance(start As String, dest As String)
    
    Dim myKey As String: myKey = "Ah3Mmh_97J4MSsHof-0e41OBauHTIrrGJnqCgEHIgd82O_sOlzGhB1ugP0oXXXXX"
    
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    objHTTP.Open "GET", "http://dev.virtualearth.net/REST/v1/Locations?q=" & start & "&key=" & myKey, False
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.send ("")
    
    
    If InStr(objHTTP.responseText, "coordinates") = 0 Then GoTo ErrorHandl
    
    
    Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = "(?=.*)\\[([0-9]+.[0-9]+,[0-9]+.[0-9]+)\\]": regex.Global = False
    Set matches = regex.Execute(objHTTP.responseText)
    coordinates1 = matches(0).SubMatches(0)
    \'MsgBox coordinates1
    objHTTP.Open "GET", "http://dev.virtualearth.net/REST/v1/Locations?q=" & dest & "&key=" & myKey, False
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.send ("")
    
    
    If InStr(objHTTP.responseText, "coordinates") = 0 Then GoTo ErrorHandl
    
    
    Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = "(?=.*)\\[([0-9]+.[0-9]+,[0-9]+.[0-9]+)\\]": regex.Global = False
    Set matches = regex.Execute(objHTTP.responseText)
    coordinates2 = matches(0).SubMatches(0)
    \'MsgBox coordinates2
    objHTTP.Open "GET", "https://dev.virtualearth.net/REST/v1/Routes/DistanceMatrix?origins=" & coordinates1 & "&destinations=" & coordinates2 & "&travelMode=driving&distanceUnit=km&output=json&key=" & myKey, False
    \'Sheets(1).Cells(1, 1).Value = "https://dev.virtualearth.net/REST/v1/Routes/DistanceMatrix?origins=" & coordinates1 & "&destinations=" & coordinates2 & "&travelMode=driving&distanceUnit=km&output=json&key=YOUR_KEY"
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    objHTTP.send ("")
    
    
    If InStr(objHTTP.responseText, "travelDistance") = 0 Then GoTo ErrorHandl
    Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = "([0-9]+\\.[0-9]+)": regex.Global = True
    Set matches = regex.Execute(objHTTP.responseText)
    msg = ""
    
    
    For Each t In matches
        msg = msg & t & vbCrLf
    Next
    \'MsgBox msg
    
        GetDistance = matches(4)
    Exit Function
ErrorHandl:
    MsgBox (objHTTP.responseText), vbCritical, "ERROR"
    GetDistance1 = -1
    
End Function

 

Jetzt müssen Sie „Ah3Mmh_97J4MSsHof-0e41OBauHTIrrGJnqCgEHIgd82O_slzGhB1ugP0oXXXXX“ durch Ihren Bing Maps API-Schlüssel ersetzen.

Versuchen Sie, in Ihrer Tabelle zwei Standorte wie Embrach und Elgg anzugeben. Berechnen Sie nun die Entfernung zwischen den beiden Orten mit der Funktion GetDistance.

Die Entfernung zwischen Embrach und Elgg beträgt 34.647 Kilometer.

Sie können auf Bing Maps überprüfen, ob das Ergebnis dasselbe ist.

Benötigen Sie einen VBA Programmierer?

Wir als exact construct programmieren mit einem Team von rd. 20 Mitarbeitern seit über 10 Jahren Excel-Tools. Wir sind ein Nischenanbieter der spezialisiert auf Makros/VBA-Codes ist. Daneben unterstützen wir auch als 3rd Level Support die IT-Abteilungen rund um Probleme bei MS Office (Excel, Word, PowerPoint, etc.).

Haben Sie ein Excel-Problem? Benötigen Sie einen Makro-Programmierer? Rufen Sie uns unverbindlich an +41 52 511 05 25 oder kontaktieren Sie uns via Kontaktformular./

 

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen