如何在Excel中通过邮政编码批量提取城市与州信息?
嘿,处理五万条邮编匹配城市和州,手动肯定不现实,给你几个高效的批量方案,根据你的场景选就行:
方法1:用Power Query免费批量匹配(推荐,无需额外工具)
- 选中你的邮编列(比如A列),点击「数据」选项卡 → 「从表格/区域」(旧版Excel可能叫「来自表格」),确认弹窗后进入Power Query编辑器。
- 在编辑器里选中邮编列,点击「添加列」→「自定义列」,输入公式:
=Json.Document(Web.Contents("https://api.zippopotam.us/us/" & [Zip Code]))
把[Zip Code]换成你实际的邮编列名,比如你的列叫「邮政编码」就写[邮政编码]。 - 点击自定义列右侧的展开箭头,先展开
places字段,再展开里面的place name(对应城市)和state(对应州)字段。 - 最后点击「关闭并上载」,把匹配好的数据导回Excel,直接复制到你新建的City和State列即可。
注意:如果是美国以外的邮编,把URL里的us换成对应国家代码(比如ca对应加拿大);如果遇到API请求限制,分批次处理(比如每次1万条)就好。
方法2:离线本地匹配(适合不能联网的场景)
- 先准备一份完整的邮编-城市-州对照表(比如USPS公开的免费数据集),整理成单独的工作表,命名为
ZipDB,列顺序为「邮编」「城市」「州」。 - 在主工作表的City列(比如B2单元格)输入公式:
=VLOOKUP(A2, ZipDB!$A:$C, 2, FALSE)
State列(C2)输入:=VLOOKUP(A2, ZipDB!$A:$C, 3, FALSE) - 选中B2和C2,双击单元格右下角的填充柄,就能一键批量填充所有数据。
提示:如果你的邮编是带前导零的文本格式(比如00501),要确保对照表和主列都是文本格式,避免匹配错误;可以用TEXT(A2, "00000")把数字格式的邮编转成标准5位文本格式。
方法3:用XLOOKUP简化公式(仅适用于Excel 365/2021及以上)
如果你用的是新版Excel,XLOOKUP比VLOOKUP更灵活直观:
- City列公式:
=XLOOKUP(A2, ZipDB!$A:$A, ZipDB!$B:$B, "无匹配", 0) - State列公式:
=XLOOKUP(A2, ZipDB!$A:$A, ZipDB!$C:$C, "无匹配", 0)
XLOOKUP不用纠结列顺序,还能直接设置无匹配时的提示文本,用起来更省心。
内容的提问来源于stack exchange,提问作者Hakan Yorgancı
相关产品推荐
相关产品推荐

