最有效的方法来检查一个数字是否在vba的大量范围内

我正在尝试编码听起来像段或间隔树,但我不知道如何在VBA中做到这一点。 基本上,我想要做的是拿一个数字列表,看看它们是否属于范围列表。 在现实世界中,数字是指客户,这些范围分配给不同的公司网站。 例如,假设我们有3个数字(又名客户)input:156000 166000和256000.站点1获得145000到149000,152300到155000和165000到165999之间的任何客户。站点2获得156000到159000之间的任何客户,162000和165000,255000到275000.站点3得到166000到180000之间的任何客户。所以我想要的function能够告诉客户一,三将去2站点,而客户2将去站点三。 所以每个站点都有大约一到八个不连续的范围。

数量(客户)数量(客户)的范围可以从1到5000不等,但范围的数量是大约3000分布在497个不同的网站,这将随着时间缓慢增加,但将静态更新。 客户编号将复制/粘贴到Excel工作表中的K列。 我将在同一工作簿中的另一个工作表中的网站范围。 起初,我试图做大量的if / then语句,但是如果做了3000个if / then语句的列表似乎不是最好的方法。 然后我考虑做一个if / then语句的分层列表,最初只是查看列L中存储的客户编号的前两个数字,如:

If Worksheets("Input").Range("L" & x) >= 14 and _ If Worksheets("Input").Range("L" & x) =< 19 then If Worksheets("Input").Range("K" & x) >= 145000 and _ If Worksheets("Input").Range("K" & x) >= 146000 then [code to assign customer to specific site] End If If Worksheets("Input").Range("K" & x) >= 245000 and _ If Worksheets("Input").Range("K" & x) >= 246000 then [code to assign customer to specific site] End If End If 

这样做的问题是,每个网站都有不连续的范围,所以我不确定是否多层if / then语句甚至能够工作。

任何人有任何想法如何能有效地完成这么多的范围?

提前致谢!

使用VLookup(Range)与较小的条件testing相结合可以很容易地做到确保范围之间的空白不通过。 不需要VBA:

Excel视图