您能在电子表格中将地址转换为邮政编码吗?

您能在电子表格中将地址转换为邮政编码吗?

给定电子表格中一列包含城市和州但没有邮政编码的街道地址,我想在第二列中输入一个公式来得出邮政编码。您知道如何做到这一点吗?

我正在处理美国地址,但与其他国家的答案也很有趣。

更新:我想我最希望的是 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

由于经过验证的地址数据库非常昂贵,因此电子表格中不会内置任何内容。

您可能会找到可以为您完成此操作的在线服务。例如,在英国皇家邮政网站允许您查找邮政编码(相当于英国的邮政编码),但每天搜索次数限制为 15 次。这仅供个人使用。企业可以获得更多 - 但您必须注册并付费。

其他国家也会有类似的服务。

答案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 对其免费服务的每日请求数有所限制。

相关内容