给定电子表格中一列包含城市和州但没有邮政编码的街道地址,我想在第二列中输入一个公式来得出邮政编码。您知道如何做到这一点吗?
我正在处理美国地址,但与其他国家的答案也很有趣。
更新:我想我最希望的是 Google 电子表格中有办法做到这一点。我知道你需要访问一个庞大的邮政编码数据库才能做到这一点,但在我看来,这样的数据库已经在 Google 地图中了。如果我在其中输入一个没有邮政编码的地址,我会得到一个有邮政编码的地址。如果地图可以进行这种查找,也许也有办法在电子表格中实现它。
答案1
Google 电子表格有一系列外部数据函数。如果您可以找到(或创建)一个通过传递参数进行查找的站点,则可以输入一个公式类似于此在:
Cell A1 (Address): 123 Main St
Cell B1 (City): Springfield
Cell C1 (State): MO
Cell D1 (combined address): =concatenate(A1,B1,C1)
Cell E1 (imported zip code):
=importData(concatenate("http://zipfinder.com/search?addr=",D1))
这是一个假设的想法。Google 电子表格中存在 concatenate、importData 和其他用于外部数据的函数。“zipfinder.com”不存在。很多网站它将帮助您根据地址找到邮政编码。棘手的部分是找到一个可以接受 URL 中的地址数据并返回足够简单的内容以供 Google 电子表格使用的程序。
答案2
您可以使用 Google Maps 服务编写自定义 Apps Script 函数,使用类似的方法这个答案。为此,打开工具...脚本编辑器...并将此函数粘贴到:
function getZIP(address) {
var geo = Maps.newGeocoder().geocode(address);
var resultComponents = geo.results[0].address_components;
for (var i = 0; i < resultComponents.length; i++) {
if (resultComponents[i].types.indexOf('postal_code') > -1) {
return resultComponents[i].long_name;
}
}
}
然后您可以在电子表格单元格中调用它,例如,它正确返回白宫的 20500:
=getZIP("1600 Pennsylvania Ave. NW, Washington, DC")
与其他一些方法不同,它也适用于美国以外的地区,例如,它正确返回埃菲尔铁塔的 75007:
=getZIP("Champ de Mars, 5 Avenue Anatole France, Paris, France")
答案3
答案4
在 Excel 中很难做到这一点。您需要使用 SOAP 工具包调用 Web 服务,或者使用 Visual Studio。人们一定想知道微软在想什么。
在 Google Docs 电子表格中执行此操作然后导出到 Excel 要容易得多:
您可以使用 GeoCoder.ca 的 XML 网络服务按地址查找邮政编码。在 Google Docs 中,您可以使用此功能:
=importXML("http://geocoder.ca/?geoit=xml&showpostal=1&locate=" & A2,"//postal")
(其中 A2 是街道地址。)
您还可以通过以下方式获取纬度和经度:
=importXML("http://geocoder.ca/?geoit=xml&showpostal=1&locate=" & A2,"//geodata")
请注意,GeoCoder 对其免费服务的每日请求数有所限制。