【发布时间】:2017-01-03 02:38:55
【问题描述】:
在开始之前,我知道所有这些都可以通过 SQL 查询来完成。相信我的话,目前正在构建一个活动目录,但现在这就是我所拥有的:
一个大约 30k 行、大约 25 列的 Excel 电子表格,其中包含项目列表,使用项目 # 作为 1 级匹配项。我们称它为“主”表。
作为唯一标识符的项目#可能会出现多次,即:
Item #10000 可以在此工作表中出现多次。
所以我创建了一个动态数组,并将整个主工作表插入到数组中
Sub Items()
Dim Items() As Variant
Sheets("Master").Activate
Items = Range("A3", "AL" & Range("a1").End(xlDown).Row)
End Sub
用户将在工作簿(“itemlist”)中的另一个工作表上,并将输入他们需要的一些项目,如下所示:Item List
我需要“主”中每个项目的所有出现(无论是单个值还是重复值)输出到另一张纸上的各个行。
我不知道如何在 VBA 中实现这一点。我发现很难找到这样的例子。
我想先对数组进行排序以更快地找到重复项吗?我应该将用户创建的列表转换为一维数组并尝试找到与二维数组的交点吗?创建“主”数组后,我不确定从哪里开始。
我在“主”表中使用数组而不是一堆索引匹配或迭代循环的原因是因为计算环境导致可用的处理能力/物理内存不一致,所以数组似乎是最如果可以处理的话,可以避免一些用户花费几分钟来获取返回值的有效方法。
【问题讨论】:
-
我的建议是你看看如何使用字典。
-
你说得对,数组处理比范围处理快得多。我无法在我所在的位置查看您的图像,但我建议您在数据仍在数组中时将所有处理应用于数据,然后将其读回范围。
-
是的,我同意。我只是不确定如何使用 VBA 在数组中应用我的所有数据处理。你有什么建议可以去哪里看吗?
-
谢谢雷米。我只是偷看了字典,它看起来好像可以像我的人造数据库中的记录集一样使用。
-
不幸的是,雷米,字典似乎只能包含唯一值,在我的示例中,我将检索重复的项目编号。