根据邮政编码确定美国邮政邮区的公式

我期望通过USPS邮政区域对数百个信封进行分类。 难点在于必须根据原始邮政编码91352手动对8个美国地区中的每个地区进行91352

http://postcalc.usps.gov/ZoneCharts/

我有一个包含ZIP列的联系人的电子表格。 我已经build立了一个基于“913”的所有USPS ZoneCharts网站的单独表格,并将这四个部分合并为一个(总共两列)。 然后,我使用左右函数来得到第一列的前三位和后三位数字,并把它们放到自己的列中(现在是三列):

 ZIP_BEG ZIP_END区域
 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
 ...等等。 

我是否会使用联系表中的VLOOKUP函数来search每个ZIP(使用LEFT函数仅使用每个ZIP值的前三个数字),然后检查该值是否大于ZIP_BEG值且小于ZIP_END值?

无论它匹配什么行,它都会返回区域值。 我把它放在第一张表格的ZIP列后面。

分解出所有可能的邮政编码似乎是可行的,但可能是“矫枉过正”(尽pipe对检测错误非常有用)。 我假定不在上述范围内的代码是(a)无效的,但是(b)不需要以任何方式标记,因此例如099将不会在实践中出现(除非表格被更新)或可以'安全地'被视为098

这是为了使每个波段只能有一个值(在Zone变化之前),方便的是你的ZIP_BEG ,以及不精确的VLOOKUP 。 VLOOKUP的语法是:

VLOOKUP(Lookup_Array中,则table_array,Col_index_num为,range_lookup)

第四个参数(range_lookup)是可选的。 忘记它或错误地将它设置为TRUE(或1 )已经引起许多悲伤,但在这里可能是非常合适的。

去引用:

如果为TRUE或省略,则返回确切或近似匹配。 如果未find完全匹配,则返回小于lookup_value的下一个最大值。 table_array的第一列中的值必须按升序排列; 否则,VLOOKUP可能不会给出正确的值。

(它进行二分search,所以需要知道哪个方向更多,哪些方向更less)。您的值应该已经是所需的顺序,所以一个公式,例如:

 =VLOOKUP(A2,ZIPUP,2) 

在同一个工作簿中的某个位置应该是足够的,其中要查找的值(目标Zip的前三位数字)被假定为在A2中,而ZIPUP是一列中ZIP_BEG的工作簿范围的范围的ZIP_BEG ,立即在列的右边匹配列中的行。

考虑到最初的假设,整个ZIP-BEG列表不需要(108'范围),因为仅使用限制就足够了(应该更快)。

如果不以这种方式汇总频段,请注意格式为0055不同,并且该区别与= VLOOKUP相关。 你已经使用=左和右=来提取你的列表和这些文本函数返回string,虽然在这里,我宁愿数字格式自己。 (我把文本分割为列。)