我是vba的初学者,希望能够使用它来自动化流程。我有一个计算机程序,它为我提供了一个Excel电子表格,其中列中的数据量可以更改。例如,我可以有一个长度为9的列:
1
3
2
4
24
23
432
55
2
或长度为5的列(注意:实际列大小通常为数千):
1
2
3
4
8
我想编写将抓取此列的代码,而不知道列的长度。类似的东西:
Dim list1 As Array
'I don't know how to find the upper bound
list1 = Range("A1:A" & Upper Bound).Value
感谢任何帮助。谢谢!
答案 0 :(得分:1)
如果您在这些列中使用常量值并且在这些列中处理大量单元格,则使用count函数可能很有用:
dim x As Long
x = Worksheets(*sheet name*).Range(*column range*).Cells.SpecialCells(xlCellTypeConstants).Count
x正在传递列中非空单元格的数量。因此,您可能需要在列范围内小心,不要包含任何标题(如果适用)。
答案 1 :(得分:0)
我相信这会让你排在最后一排。如果您想要计算所有值(例如,前几行是空白的),您可能需要小心。
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
答案 2 :(得分:0)
要将A列中的数据转换为2d变体数组,请使用以下命令:
Dim vA As Variant
vA = [a1:index(a:a,counta(a:a))]
这假设数据中没有空白单元格,并且数据从第1行开始。