gpt4 book ai didi

vba - 检查数字是否在vba中的大量范围内的最有效方法

转载 作者:行者123 更新时间:2023-12-04 22:00:34 25 4
gpt4 key购买 nike

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

根据范围检查的数字(客户)的数量可以从 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) 结合较小的条件测试来确保范围之间的空白不会通过。无需 VBA:

Excel view

关于vba - 检查数字是否在vba中的大量范围内的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com