检查数字是否在vba

时间:2016-02-21 22:01:32

标签: excel vba excel-vba named-ranges

我正在尝试编写听起来像段或间隔树的内容,但我不确定如何在VBA中执行此操作。基本上,我想要做的是获取一个数字列表,看看它们是否属于范围列表。在现实世界中,数字指的是客户,这些范围分配给不同的公司站点。例如,假设我们输入了3个数字(也就是客户):156000 166000和256000.站点1可以获得145000到149000,152300到155000和165000到165999之间的任何客户。站点2可以获得156000到159000之间的任何客户,162000和165000,以及255000到275000.站点3获得166000到180000之间的任何客户。所以我希望该功能能够告诉客户一个和三个将转到站点2,而客户二将转到站点三。因此,每个站点都有大约一到八个与之相关的非连续范围。

根据范围检查的数量(客户)数量可以在1到5000之间变化,但是497个不同站点的范围数量大约为3000,这将随着时间的推移缓慢增加,但将静态更新。客户编号将复制/粘贴到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语句甚至能够工作。

对于如何通过如此大量的范围有效地完成这项工作,任何人都有任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:3)

使用VLookup(Range)和较小的条件测试来确保范围之间的空白空间不通过非常容易。不需要VBA:

Excel view