Vba 从Excel中的不确定范围大小提取数据

Vba 从Excel中的不确定范围大小提取数据,vba,excel,excel-2010,Vba,Excel,Excel 2010,我是VBA新手,我想得到一些帮助 我有一个电子表格,它的范围总是有10列,但可以有X行。我正在尝试编写一个VBA脚本,它将在这个范围内迭代并从每个单元格中提取值 例如,如果我有两行,我需要A1,B1,C1..J1,然后我需要A2,B2,C2…J2。下一次我可以有5行,然后另一次3行 如何设置循环以使其工作?类似于 Dim lastRow as long lastRow = UsedRange.Rows.Count 'or some other way of determining th

我是VBA新手,我想得到一些帮助

我有一个电子表格,它的范围总是有10列,但可以有X行。我正在尝试编写一个VBA脚本,它将在这个范围内迭代并从每个单元格中提取值

例如,如果我有两行,我需要A1,B1,C1..J1,然后我需要A2,B2,C2…J2。下一次我可以有5行,然后另一次3行

如何设置循环以使其工作?

类似于

Dim lastRow as long

lastRow = UsedRange.Rows.Count     'or some other way of determining the last row used

    for i = 1 to lastRow    'loop through all used rows

    'ActiveSheet.Cells(i, 1).value    'column A
    'ActiveSheet.Cells(i, 2).value    'column B
    'ActiveSheet.Cells(i, 3).value    'column C

    next i

您还可以使用一个动态命名范围,并通过该范围进行循环。请参阅此或谷歌以获得更好的示例。动态名称范围非常强大,特别是对于图表

例如,您可以将名称范围引用设置为

=OFFSET(Sheet1!$A$1,0,0,COUNT(Sheet1!$A:$A),10) '10 is the width and will go to column J
假设列A将具有表的真正最大行

然后,


在代码中处理尽可能多的内容几乎总是更好/更快的,即在Excel中将一个范围指定给一个数组,然后在数组中循环,而不是引用单元格(尤其是在循环中).

确定最后使用的行:如果不是特定于列的行计数,也可以使用
UsedRange.Rows.Count
确定最后一行。将
Range(“A1”).CurrentRegion.Value
分配给变量,然后迭代该变量如何?这可能吗?@Mark:我永远不会建议使用
UsedRange
,因为它们在查找工作表中的最后一行时非常不可靠。使用这种方法。杰出的我在上面建议的“UsedRange.Rows.Count”中使用了它。我很高兴您发现它很有用。正如Siddharth所说,UsedRange.Rows.Count不是查找最后一行数据的好方法。
Dim arr() As Variant

 arr = Range("YourRangeName")

  For x = 1 To UBound(arr,1) 'Finds the max number of rows in the array, UBound(arr,2) finds the total columns.
    'Do some code here where x steps through the array arr
    '  = arr(x, 1) 'column a
    '  = arr(x,2)  'column b 
    '  = arr(x,3) ....     
  Next x