在Excel中循环范围的每一行
这是我确信有一个内置函数(以前我可能已经被告知了这个函数)的其中一个,但是我正在抓我的脑袋去记住它。
如何使用Excel VBA遍历多列范围的每一行? 我一直在寻找的所有教程似乎只是提到了一个一维范围的工作…
Dim a As Range, b As Range Set a = Selection For Each b In a.Rows MsgBox b.Address Next
像这样的东西:
Dim rng As Range Dim row As Range Dim cell As Range Set rng = Range("A1:C2") For Each row In rng.Rows For Each cell in row.Cells 'Do Something Next cell Next row
在循环中,我总是喜欢使用Cells
类,使用R1C1引用方法,如下所示:
Cells(rr, col).Formula = ...
这使我能够轻松快捷地遍历一系列单元格:
Dim r As Long Dim c As Long c = GetTargetColumn() ' Or you could just set this manually, like: c = 1 With Sheet1 ' <-- You should always qualify a range with a sheet! For r = 1 To 10 ' Or 1 To (Ubound(MyListOfStuff) + 1) ' Here we're looping over all the cells in rows 1 to 10, in Column "c" .Cells(r, c).Value = MyListOfStuff(r) '---- or ---- '...to easily copy from one place to another (even with an offset of rows and columns) .Cells(r, c).Value = Sheet2.Cells(r + 3, 17).Value Next r End With
刚刚偶然发现,我想我会build议我的解决scheme。 我通常喜欢使用内置的多范围数组(我猜这也是我的JS程序员)分配范围的function。
我经常写这样的代码:
Sub arrayBuilder() myarray = Range("A1:D4") 'unlike most VBA Arrays, this array doesn't need to be declared and will be automatically dimensioned For i = 1 To UBound(myarray) For j = 1 To UBound(myarray, 2) Debug.Print (myarray(i, j)) Next j Next i End Sub
给variables赋值范围是在VBA中操纵数据的一个非常有效的方法。