Table of contents
微软Excel是一个非常通用的电子表格程序。 它所提供的工作范围之广是你无法想象的。 你甚至可以在Excel中计算两个地址之间的驾驶距离。 如果你有一个地址清单,要找到它们之间的差异,你当然可以使用MS Excel。 你也可以手动计算距离。 但这将是非常耗时的。 由于你有因此,在这篇文章中,我将告诉你如何在Excel中计算两个地址之间的驾驶距离。
下载实践工作手册
你可以从下面的链接中下载Excel文件,并随着它进行练习。
计算两个地址之间的驾驶距离.xlsm在Excel中计算两个地址之间驾驶距离的2种有效方法
1.使用三角函数来计算驾驶距离
在这里,我将告诉你如何结合不同的 三角函数 来计算Excel中两个地址之间的驾驶距离。
为了给你一个例子,我取了两个地址。 第一个地址是 MacArthur Park, Camden NSW, 澳大利亚 其经度和纬度为 34.06312149 和 -118.2783975 第二个地址是 美国新泽西州泽西城 其经度和纬度为 40.71799929 和 -74.04276812 分别是。
现在,我将结合 ACOS , COS , 冼国华 , & RADIANS 该公式将有效地计算出两个地址之间以英里为单位的驾驶距离。
对于这一点。
❶选择单元格 D8 首先。
❷然后在该单元格插入以下公式。
=acos(cos(radians(90-c6)) *cos(radians(90-c5)) +sin(radians(90-c6)) *sin(radians(90-c5)) *cos(radians(d6-d5)) ) *3959
之后,按 进入 按钮。
现在,你会看到,该公式已经计算出了在以下地点的行驶距离 麦克阿瑟公园,卡姆登新州,澳大利亚。 和 美国新泽西州泽西城 因此,你将在单元格中看到结果 D8 这就是 2445.270922 英里。
公式分解
- cos(radians(90-c6)) *cos(radians(90-c5)) - 的 RADIANS 函数将数值转换为弧度,而 COS 函数提供数值的余弦,然后将纬度的余弦相乘。 输出 - 0.365377540842758
- cos(radians(d6-d5)) - 提供两个地址之间经度差的余弦值。 输出 - 0.716476936499882
- sin(radians(90-c6)) *sin(radians(90-c5)) - 从90弧度计算经度的分流,并乘以正弦值。 输出 - 0.627884682513118
- sin(弧度(90-c6))*sin(弧度(90-c5))*cos(弧度(d6-d5))。 - 成为0.627884682513118 * 0.716476936499882。 输出 - 0.449864893802199
- cos(radians(90-c6)) *cos(radians(90-c5)) +sin(radians(90-c6)) *sin(radians(90-c5) *cos(radians(d6-d5) - 成为0.365377540842758 * 0.449864893802199。 输出 - 0.815242434644958
- 然后 ACOS 函数对该值进行算术运算。 输出 - 0.617648629071256
- 最后,将该值乘以 3959 - 0.617648629071256 *3959 提供以英里为单位的结果。 输出 - 2445.270922
阅读更多。 如何在Excel中计算两个地址之间的距离(2种方法)
2.使用VBA代码计算两个地址之间的驾驶距离
在本节中,我将使用一个 VBA 然后我将使用该函数在Excel中计算两个地址之间的驾驶距离。
这里,我使用了两个地址。 第一个地址是 MacArthur Park, Camden NSW, 澳大利亚 其经度和纬度为 34.06312149 和 -118.2783975 第二个地址是 美国新泽西州泽西城 其经度和纬度为 40.71799929 和 -74.04276812 分别是。
我将为每个地址生成坐标。 坐标是纬度和经度的组合。 要生成一个坐标。
- 先输入一个地址的纬度。
- 然后插入一个逗号。
- 之后再输入同一地址的经度。
所以第一个地址的坐标是 34.0631214903094,-118.27839753751 而第二个地址的坐标是 40.7179992930381,-74.0427681204225 .
ǞǞǞ VBA 代码需要一个 API 驾车距离的计算方法。 API 代表应用编程接口。 你可以使用一个 API 连接到 谷歌地图 或 滨州地图 无论你喜欢什么。
但创建 谷歌地图API 反之,你可以创建一个 API 的。 必应MAP 免费的。
因此,我在使用 必应MAP API 这里。
- 要创建一个免费的 必应MAP API , 点击这里 .
我已经创建了一个 API 我在此附上 API 下面。
AhFG0hk5nKCcQlk80MRaSk1ZtoYUYsX98BCLWi7p7MKZ-VrzOWptdUwsvj9D3L9F
现在,是时候编写 VBA 代码。 对于这一点。
- 新闻 ALT + F11 以打开 VBA编辑器 .
- 现在转到 插入 ➤ 模块 来打开一个新的模块。
打开后 VBA编辑器 ,插入以下内容 VBA 打开的模块中的代码。
Option Explicit Public Function Driving_Distance(startlocation As String, destination As String, keyvalue As String) Dim First_Value As String, Second_Value As String, Last_Value As String, mitHTTP As Object, mitUrl As String First_Value = "//dev.virtualearth.net/REST/v1/Routes/DistanceMatrix? origins=" Second_Value = "& destinations=" Last_Value = "& travelMode=driving& o=xml& key="& keyvalue & "&distanceUnit=mi" Set mitHTTP = CreateObject("MSXML2.ServerXMLHTTP") mitUrl = First_Value & startlocation & Second_Value & destination & Last_Value mitHTTP.Open "GET", mitUrl, False mitHTTP.SetRequestHeader "User-Agent", "Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)" mitHTTP.Send("" ) Driving_Distance =Round(Round(WorksheetFunction.FilterXML(mitHTTP.ResponseText, "//TravelDistance"), 3), 0) End Function
代码分解
- 在这里,我创建了一个用户定义的函数,叫做 驾驶距离。
- 然后我用了3个参数。 起始位置 , 目的地 ,以及 keyvalue。 这些是两个地址的位置和 API 分别是值。
- 然后我使用了几个变量,如 首先_值 , 二次值 , 最后的价值 , 淘宝网 , & mitUrl。 这些变量用于存储不同的值。
- 然后将这些值(存储在 淘宝网 )并使用了几个对象方法( 开放式 , 设置RequestHeader , 发送 )。 这就是我如何设法计算出驾驶距离的方法。 API .
这个 VBA 代码生成了一个用户定义的函数,名为 驾驶距离 .
职能 驾驶距离 需要 3个论点 总的来说。
这里有一个通用的语法 驾驶距离 功能。
=Driving_Distance(Start_Location_Coordinate,End_Location_Coordinate, API)
现在,是应用用户定义的函数的时候了。 为此。
- 选择单元格 E10 .
- 然后插入以下公式。
=Driving_Distance(E5,E6,C8)
- 现在,按 进入 .
公式分解
- E5 是指 起始点_位置_坐标 .
- E6 是指 末端_位置_坐标 .
- C8 是指 API 的。 必应MAP .
该函数计算两个地址之间的驾驶距离,单位为英里。 查看单元格 E10 它将看到这个数字。 2790 .
因此,在这之间的驾驶距离 麦克阿瑟公园,卡姆登新州,澳大利亚。 和 美国新泽西州泽西城 是 2790 英里。
阅读更多。 如何在Excel中计算两个地址之间的距离(3种方法)
练习部分
在所提供的Excel文件的末尾,你会得到一个像下面截图一样的Excel表,在这里你可以练习本文讨论的所有方法。
总结
综上所述,我讨论了在Excel中计算两个地址之间的驾驶距离的2种方法。 如果有任何问题,请不要犹豫,在下面的评论区提出。 我们会尽快回复所有相关的疑问。 并请访问我们的网站 优秀 以探索更多。