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

时间:2012-06-26 16:51:46

标签: excel vba excel-vba excel-2010

我是VBA的新手,我很乐意帮忙。

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

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

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

2 个答案:

答案 0 :(得分:0)

类似

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

答案 1 :(得分:0)

您还可以使用动态命名范围并循环遍历。有关更好的示例,请参阅此link或google。动态名称范围很强大,特别是对于图表。

对于您的示例,您可以将名称范围引用设置为;

=OFFSET(Sheet1!$A$1,0,0,COUNT(Sheet1!$A:$A),10) '10 is the width and will go to column J

假设列A将具有表的真正最大行。

然后;

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

在代码中尽可能多地/更快地处理,即将Excel中的范围分配给数组然后循环遍历数组而不是引用单元格(特别是在循环中)。