这是我到目前为止所做的:
With Worksheets("INPUT_MASTERDATA")
arrInputUniqueItems = .Range("L2", .Range("L" & Rows.Count).End(xlUp))
End With
我想在上面的数组中包含值“x”。
工作表“INPUT_MASTERDATA”中范围L的样本数据
R83711850
1210221340
1210223342
R83711181
R83711931
这些都进入阵列就好了。现在我想添加值“x”。所以之后的数组看起来像这样:
R83711850
1210221340
1210223342
R83711181
R83711931
x
任何想法或帮助都非常感谢!提前谢谢。
答案 0 :(得分:1)
如果您要动态地向集合中添加项目,则应考虑使用更合适的数据类型,例如Collection
。在指定尺寸后,不应调整数组的大小。
所以...考虑一次性从范围创建数组,然后将其加载到Collection
中,然后您可以向集合中添加更多项目。你想要使用数组的原因是将整个范围加载到内存中比迭代一个范围并将每个单元格直接添加到集合中更快。
Sub Main()
[L1] = "header"
[L2] = "R83711850"
[L3] = "1210221340"
[L4] = "1210223342"
[L5] = "R83711181"
[L6] = "R83711931"
Dim lastRow As Long
lastRow = Range("L" & Rows.Count).End(xlUp).Row
Dim v As Variant
Dim c As New Collection
Dim arr As Variant
arr = Range("L2:L" & lastRow).Value
For Each v In arr
c.Add v
Next
' then if you ever need to add more just add it to the collection
c.Add "new value"
' print to confirm
For Each v In c
Debug.Print v
Next
End Sub
打印
R83711850
1210221340
1210223342
R83711181
R83711931
new value
立即窗口中的CTRL + G
答案 1 :(得分:0)
您可以轻松地完成此操作,而无需采用其他循环和/或其他方法。
ReDim
(当然您可以并且应该调整阵列大小)代码1
Sub Method1_2D()
Dim arrInputUniqueItems
With Worksheets("INPUT_MASTERDATA")
arrInputUniqueItems = .Range("L2", .Range("L" & Rows.Count).End(xlUp).Offset(1, 0))
arrInputUniqueItems(UBound(arrInputUniqueItems), 1) = "X"
End With
End Sub
代码2
Sub Method2_1D()
Dim arrInputUniqueItems
With Worksheets("INPUT_MASTERDATA")
arrInputUniqueItems = Application.Transpose(.Range("L2", .Range("L" & Rows.Count).End(xlUp)))
ReDim Preserve arrInputUniqueItems(UBound(arrInputUniqueItems))
arrInputUniqueItems(UBound(arrInputUniqueItems)) = "X"
End With
End Sub