将数字列快速读入数组的最佳方法

17

假如我有一列数字(它们的数量可能不同,但在1000-10000之间),我想在VBA中将它们全部读入一个数组中,最快的方法是什么?

显然,我可以创建一个大小为10000的数组并使用for/while循环,但是否有比这更快的方法?

1个回答

22

像这样吗?

Dim Ar as Variant

Ar = Sheets("Sheet").Range("A1:A10000").Value

如果您不知道最后一行,则可以使用此方法查找最后一行,然后使用上面的代码:

Ar = Sheets("Sheet").Range("A1:A" & LRow).Value

如果你正在寻找最快的方法,我认为你可以使用.Value2。我注意到的唯一区别是在日期方面,.Value2返回序列号而不是[本地]格式化日期。 - lori_m
该值并不返回格式化日期,而是返回一个Variant(datetime)类型。如果您看到它显示为格式化日期,那只是因为查看器正在向您展示默认的ToString()。它不是一个字符串。 - Cor_Blimey
10
值得一提(我没在其他地方看到这个提到):即使只涉及一个列,该答案仍会返回多维数组。Ar 数组可以像 Ar(1,1) 等一样使用,而不是像 Ar(1) 这样使用。此外,即使您的模块中有 Option Base 0,它也将是一个以 1 开始的数组。 - mountainclimber11
谢谢mountainclimber,那正是我所缺失的部分。 - Tom Collins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接