VBA:基于另一个数组

时间:2015-12-22 10:04:38

标签: arrays excel excel-vba vba

我没有找到任何东西。我想要实现的是根据另一个数组[n x 3]过滤掉m x 1数组

让我们说:

arr1 = [n x 3] 'where n is roughly 500'000
arr2 = [m x 1] 'where m is roughly 500

arr1它的结构如下:

arr1(1,1) = ID1 | arr1(1,2) = String1 | arr1(1,3) = Bolean1
arr1(2,1) = ID2 | arr1(2,2) = String2 | arr1(2,3) = Bolean2

arr2它的结构如下:

arr2 (1) = ID2 | arr2 (2) = ID23 | arr2 (3) = ID345 | arr2 (4) = ID4567 | arr2 (5) = ID6381

我需要做的是过滤arr1以排除arr1(i,1)arr2中包含arr1(i,2) <> "String2"的所有记录。然后将过滤后的数组粘贴到工作表

1 个答案:

答案 0 :(得分:1)

向arr1添加一个额外字段 arr1是[n x 4]

  1. 将额外字段设置为初始化为False

  2. 的布尔值
  3. 逐步执行arr2,对于arr2中的每个ID,将arr1中的相应条目设置为True,例如: 如果我们在arr2中找到ID23,并且我们在arr1(x,1)的arr1中找到ID23,则设置arr1(x,4)= True

  4. 一次将arr1复制到新数组行,仅复制arr1(x,4)= False

  5. 的项目

    您也可以考虑使用类而不是多维数组。然后,您可以构建集合并使用For Each来逐步完成它们。这可以更快地运行,并且可以更轻松地添加新字段。