Izrēķini attālumu starp adresēm ar Excel VBA funkciju

Šodien Power BI Meetup grupā stāstīju par kādu savu projektu, kurā izmantoju Excel Formas, VBA kodu, Power Query un citus rīkus datu vākšanai un analīzei.

​Gribu padalīties ar vienu atradumu internetā - VBA funkciju, ar kuru var noteikt attālumu starp divām adresēm. Kā demonstrēju nodarbībā, samērā labi strādā Latvijas adreses un Indeksi. Piemēram, noteikt attālumu starp diviem indeksiem "LV-1001" un "LV-1013" vai starp "Rīga" un "Daugavpils". Tā kā meklētājs izmanto Google Maps, tad jārēķinās ar to, ko Google spēj un nespēj. Pamēģiniet paši!

PS komerciālai izmantošanai (lasi - tūkstošiem adrešu meklēšanas pieprasījumiem dienā), jāreģistrē Google Key.

Lai šo funkciju izmantotu, Tavā Excel jābūt iespējotām Macro komandām. Spied Alt+F11, Iekopē šo kodu Pesonal.xlsb zem Modules sadaļas.


​'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


Tālāk Excel šunā ievadi formulu pēc principa:

=GETDISTANCE("adrese1";"adrese2")

Tā kā pats šo neesmu izdomājis, tad lūk atsauce uz rakstu, kurā to atradu. Kā redzams rakstā, tad iespējamas vairākas variācijas - attāluma noteikšana, laika noteikšana, attālums starp koordinātām utt. ​ ​http://analystcave.com/excel-calculate-distances-between-addresses/

Priecājos par lielo atsaucību Power BI Meetup grupā. Paldies!


©2020 by Excel Know How