最快的填充方式,然后根据条件填充读取数组的内容

时间:2015-08-05 14:50:04

标签: arrays vba excel-vba excel

如果基于条件逻辑填充数组。假设数据如下所示:

Col A     Col B      Col C     colD

num1      cond1      cond2     info
num2      cond1      cond2     info
num3      cond1      cond2     info
num4      cond1      cond2     info

理论上可能有很多数字和更多条件/信息列。阵列应填写满足col B和C条件的数字和信息。

它更快:

1)对数组进行尺寸标注,使其可以保存所有数字

当条件不满足时,它会跳过填充“行”(数组会有空白)

在循环中读取数组的内容时,如果'line'为空,则让循环跳过读取

数组的图形表示:

Array(0, 0)  num1       Array(0,1)  info
Array(1, 0)  (empty)    Array(1,1)  (empty)
Array(2, 0)  (empty)    Array(2,1)  (empty)
Array(3, 0)  num4       Array(3,1)  info
Array(4, 0)  (empty)    Array(4,1)  (empty)
Array(5, 0)  num6       Array(5,1)  info

这样做的优点是尺寸仅为1次。 Redim Preserve需要一些资源,我们会保存这些资源。

2)Redim在我们去的时候保留数组

只有在满足条件时才填充数组

数组的图形表示:

Array(0, 0)  num1       Array(0,1)  info
Array(3, 0)  num4       Array(3,1)  info
Array(5, 0)  num6       Array(5,1)  info

这具有更小阵列的优点。将其处理为输出不需要在处理阵列之前检查它是否为空白。

我们假设空白没有任何价值(填充空白的IE从不添加任何有价值的信息)

答案是否取决于以下因素;

- 条件数

- 填充一行所需的时间长度(IE列数)

- 数组在读取时循环的次数

- 最终会变成空白的行的比例

或者答案总是一样的,IE总是比另一个好?

0 个答案:

没有答案