VBA:将单个值添加到单列数组

  1. 我不知道数组的大小。
  2. 该数组是从表“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. 简单地使用比感兴趣的范围的末尾更长的范围1个单元,或者
  2. 在一维数组上使用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