我希望USPS邮政区域能够更轻松地对数百个信封进行分类。困难在于必须根据原始邮政编码91352
为8个美国区域中的每个区域手动排序。
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值?
无论匹配哪一行,它都会返回Zone值。我把它作为第一张纸张中ZIP列之后的一列。
答案 0 :(得分:4)
拆分每个可能的邮政编码似乎都是可行的,但可能是“过度杀伤”(虽然可能对检测错误有用)。我假设不在上述范围内的代码是(a)无效但(b)不要求以任何方式标记,因此例如099
将在实践中永远不会出现(除非表格已更新)或可“安全”被视为098
。
这样可以只考虑每个频段的一个值(在更改区域之前),方便地考虑ZIP_BEG
个,并结合不精确的VLOOKUP 。 VLOOKUP的语法是:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
其中第四个参数(range_lookup)是可选的。忘记它或将其设置为TRUE(或1
)会造成很大的麻烦,但在这里可能非常合适。
引用:
如果为TRUE或省略,则返回精确或近似匹配。如果未找到完全匹配,则返回小于lookup_value的下一个最大值。 table_array第一列中的值必须按升序排列;否则,VLOOKUP可能无法给出正确的值。
(它进行二分搜索,因此需要知道哪个方向更多,哪个方向更少)。您的值应该已经按照所需的顺序排列,因此公式如下:
=VLOOKUP(A2,ZIPUP,2)
同一工作簿中的某个地方应该足够,其中要查找的值(目标Zip的前三个数字)假定为A2,ZIPUP
是工作簿范围的ZIP_BEG
的名称{1}}位于一列中,Zone
位于该列右侧的匹配行中。
鉴于最初的假设,整个ZIP-BEG
列表不是必需的(108'范围'),因为仅使用限制,74就足够了(并且应该更快)。
如果不以这种方式聚合频段,请注意格式,因为005
与5
不同,并且该区别与= VLOOKUP相关。您已经使用= LEFT和= RIGHT来提取列表,这些文本函数返回字符串,虽然在这里我更喜欢自己编号格式。 (我将范围与文本分割为列。)