【发布时间】:2019-08-12 15:52:20
【问题描述】:
我在“C”列中有一个字符串,从 C2 开始(例如:Cat、Dog、Bird 等),但我不知道有多少。所以我使用 LRow 函数来查找最后一行数据。目前,最后一行是 C63,但如果我在下周或下个月运行子例程,这预计会有所不同(因此我说“我不知道有多少”)。我想创建一个数组,例如 RTArr = Array("Cat", "Dog", "Bird", etc...) 所以...我在想这样的事情:
Dim RTArr As Variant
LRow = r.End(xlDown).Offset(x, y).Row
With ActiveSheet
For i = 2 To LRow
str = .Range("C" & i).Value
Next i
End With
我可以用类似的东西填充数组吗:
Dim RTArr As Variant
LRow = r.End(xlDown).Offset(x, y).Row
With ActiveSheet
For i = 2 To LRow
ArrNum = (i - 1)
str = .Range("C" & i).Value
RTArr(ArrNum) = str
Next i
End With
或者由于数组的大小未知,这不起作用?还是我必须在循环中使用“修改”?在这种情况下使用“集合”会更好吗?还是以其他方式解决?我可以简单地将一系列单元格设置为数组而不需要循环吗?
【问题讨论】:
-
RTArr = Range("C2:C" & LRow).Value会给你一个二维数组。 -
你想要一维数组还是二维数组?如果是 2D,SJRs 解决方案消除了对循环的需要。对于一维解决方案,您需要在使用循环向其中输入值之前设置数组的大小。
-
@ARL - 或
RTArr =Application.Transpose(Range("C2:C" & LRow).Value)会给你一个没有循环的一维数组。