我希望能够更轻松地按 USPS 邮区对数百个信封进行分类。困难在于必须根据原始邮政编码对美国 8 个区域中的每一个区域进行手动排序:91352
.
http://postcalc.usps.gov/ZoneCharts/
我有一个包含 ZIP 列的联系人电子表格。我已经根据“913”设置了所有 USPS ZoneCharts 站点的单独工作表,并将四个部分合并为一个(总共两列)。然后,我使用 LEFT 和 RIGHT 函数获取第一列的前三个和最后三个数字,并将它们放入自己的列中(现在总共三列):
ZIP_BEG ZIP_END Zone
005 098 8
100 212 8
214 268 8
270 342 8
344 344 8
346 347 8
349 349 8
350 352 7
354 359 7
360 361 8
362 362 7
363 364 8
365 366 7
...etc.
我是否会使用联系人表中的 VLOOKUP 函数来搜索每个 ZIP(使用 LEFT 函数仅使用每个 ZIP 值的前三个数字),然后检查该值是否既大于 ZIP_BEG 值又小于 ZIP_END价值?
无论它匹配什么行,它都会返回区域值。我将其作为第一张表中 ZIP 列之后的一列。
拆分出所有可能的邮政编码似乎可行,但可能“过度”(尽管可能有助于检测错误)。我假设不在上述范围内的代码是 (a) 无效,但 (b) 不需要以任何方式标记,例如099
在实践中永远不会出现(除非更新表格)或者可以“安全地”视为098
.
这是为了可以只考虑每个频段的一个值(在区域更改之前),方便您ZIP_BEG
与一个不精确的VLOOKUP。语法为VLOOKUP is:
VLOOKUP(查找值,表数组,列索引编号,范围查找)
其中第四个参数(range_lookup)是可选的。忘记它或将其设置为 TRUE(或1
)错误地造成了很多悲伤,但可能非常适合这里。
去引用:
如果为 TRUE 或省略,则返回精确或近似匹配。如果未找到精确匹配,则返回小于lookup_value的下一个最大值。
table_array第一列的值必须按升序排列;否则,VLOOKUP 可能无法给出正确的值。
(它进行二分搜索,因此需要知道哪个方向更多,哪个方向更少)。您的值应该已经符合所需的顺序,因此公式如下:
=VLOOKUP(A2,ZIPUP,2)
同一工作簿中的某个位置应该足够了,其中假定要查找的值(目标 Zip 的前三位数字)位于 A2 中,并且ZIPUP
是工作簿范围的名称ZIP_BEG
在一列中和Zone
在紧邻其右侧的列中的匹配行中。
鉴于最初的假设,整个ZIP-BEG
列表不是必需的(108 个“范围”),因为仅使用限制,74 个就足够了(并且应该更快)。
如果不以这种方式聚合频段,请注意格式化为005
不等于5
这种区别与 =VLOOKUP 有关。您已使用 =LEFT 和 =RIGHT 来提取列表,这些文本函数返回字符串,但在这里我更喜欢自己格式化数字。 (我使用“文本到列”来分割范围。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)