【发布时间】:2018-06-22 15:36:44
【问题描述】:
所以我试图在不使用任何循环的情况下拆分数组。
xData 是一种存储 csv 文件数据的变体,csv 文件中的每一行都包含 ID;然后将每一行放入数组中的值。
dData.setNameArray 和dData.setDataArray 是一个自定义类型对象,用于存储已排序的数据以供以后使用。
我得到了循环:
Dim i As Integer
For i = 1 To UBound(xData)
dData.setNameArray = Split(xData(i), ";")(0)
dData.setDataArray = Split(xData(i), ";")(1)
Next i
但由于数据量很大,我想避免这种情况。我想删除 for loop 并按原样拆分数组,但它似乎不起作用。
还有其他方法可以避免使用循环吗?我发现Manipulating arrays without loops 第一个答案似乎是正确的方向。但我不是 100% 确定如何使用它(如果它可以成为一种方法)。
【问题讨论】:
-
将其拆分为 tmp 变体类型 var 并在每次迭代时从那里提取数据。仍然是一个循环,但计算量较少。顺便说一句,什么是 setNameArray 和 setDataArray ?某种自定义类方法? ftm,什么是 xdata?
-
另一种方法:将数组写入工作表范围(一步);使用
.TextToColumns方法拆分。然后将其读回一个变体数组(也只需一步完成)。 -
@Jeeped 对不起,如果我有点不清楚。 setNameArray 和 setDataArray 是存储数据以供以后使用的自定义数据类型。 xData 是一个数组,其中包含来自 csv 文件的信息。在 csv 文件中,每一行数据都存储为 ID;Value。
-
设置一个计时器,以便您可以测量它。请务必使用隐藏工作表,并关闭屏幕更新。
-
讨论了高分辨率计时器here:
标签: arrays excel vba delimiter