您可以将地址转换为电子表格中的邮政编码吗?

Isa*_*ses 12 google-spreadsheets microsoft-excel

在电子表格中给定一列带有城市和州但没有邮编的街道地址,我想在第二列中放置一个公式来生成邮政编码。你知道一种方法吗?

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

更新:我想我主要希望有一种方法可以在 Google 电子表格中做到这一点。我意识到你需要访问一个庞大的邮政编码数据库才能做到这一点,但在我看来,这样的数据库已经在谷歌地图中了。如果我在那里输入一个没有邮政编码的地址,我会得到一个带有邮政编码的地址。如果 Maps 可以进行这种查找,那么也许有一种方法可以在电子表格中实现它。

Dou*_*ris 8

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))
Run Code Online (Sandbox Code Playgroud)

这是一个假设的想法。Google 电子表格中存在用于外部数据的 concatenate、importData 等函数。“zipfinder.com”不存在。有很多网站可以帮助您从地址中找到邮政编码。棘手的部分是找到一个接受 URL 中的地址数据并返回足够简单以供 Google 电子表格使用的内容。


小智 5

您可以使用与此答案类似的方法,使用 Google 地图服务编写自定义 Apps 脚本函数。为此,请打开工具...脚本编辑器...并将此函数粘贴到:

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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后您可以在电子表格单元格中调用它,例如,它为白宫正确返回 20500:

=getZIP("1600 Pennsylvania Ave. NW, Washington, DC")
Run Code Online (Sandbox Code Playgroud)

与其他一些方法不同,它也适用于非美国位置,例如它正确返回 75007 为埃菲尔铁塔:

=getZIP("Champ de Mars, 5 Avenue Anatole France, Paris, France")
Run Code Online (Sandbox Code Playgroud)


Chr*_*isF 4

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

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

其他国家也将存在类似的服务。