VBA:将单个值添加到单列数组
- 我不知道数组的大小。
- 该数组是从表“INPUT_MASTERDATA”中的列L创build的。
这是我迄今为止:
With Worksheets("INPUT_MASTERDATA") arrInputUniqueItems = .Range("L2", .Range("L" & Rows.Count).End(xlUp)) End With
我想在上面的数组中包含值“x”。
工作表上的范围L的示例数据“INPUT_MASTERDATA”
R83711850 1210221340 1210223342 R83711181 R83711931
这些都进入arrays就好了。 现在我想添加值“x”。 所以之后的数组看起来像这样:
R83711850 1210221340 1210223342 R83711181 R83711931 x
任何想法或帮助,高度赞赏! 先谢谢你。
如果您要dynamic添加项目到您的集合,您应该考虑一个更好的数据types,如Collection
。 在指定尺寸后,数组的大小不会被调整。
所以…考虑从一个范围内创build一个数组,然后加载到一个Collection
,然后你可以添加更多的项目集合。 你想要使用数组的原因是将整个范围加载到内存中将比迭代一个Range并将每个单元格直接添加到集合要快。
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个单元,或者
- 在一维数组上使用
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