使用VBA对Excel中的填充行进行迭代

所以我正在尝试使用VBA在Excel电子表格中迭代工作表。 我想遍历每一行,然后通过每一列,尽pipe谷歌search,我实际上找不到一个直观的方式来做到这一点。

我假设一行中的第一个单元格必须填充,如果它不是,那么一定是结束。 我可以强制这一点

我目前的做法是遍历行,然后尝试获取第一个单元格的值,但我无法弄清楚。 我在这里和其他地方使用范围等问题,但没有什么能帮助我编写代码。

目前的做法是:

Set sh = ActiveSheet RowCount = 0 For Each rw In sh.Rows 'If Row.Cells(1, 1).Value = "" Then Exit For RowCount = RowCount + 1 Next rw MsgBox (RowCount) 

现在当我运行这个时,我得到了一个很大的数字,这是错误的,因为表只有大约25行。 我说第一行,因为它不工作。

我可以在For循环的第一行中更改什么,以便在find第一个单元格为空的行时正确地中断?

看起来你只是硬编码的行和列; 否则,一些小的调整,我想你在那里:

 Dim sh As Worksheet Dim rw As Range Dim RowCount As Integer RowCount = 0 Set sh = ActiveSheet For Each rw In sh.Rows If sh.Cells(rw.Row, 1).Value = "" Then Exit For End If RowCount = RowCount + 1 Next rw MsgBox (RowCount) 

为了寻找类似的人的利益,请参阅工作表.UsedRange
例如? ActiveSheet.UsedRange.Rows.Count ? ActiveSheet.UsedRange.Rows.Count
和循环如
For Each loopRow in Sheets(1).UsedRange.Rows: Print loopRow.Row: Next

我将在我的答案中做出几个假设。 我假设你的数据从A1开始,并且在每一行有数据的第一列没有空单元格。

此代码将:

  1. 查找列A中具有数据的最后一行
  2. 循环通过每一行
  3. 用数据查找当前行的最后一列
  4. 遍历当前行中的每个单元格直到find的最后一列。

这不是一个快速的方法,但会按照您的build议,逐个遍历每一个。


 Sub iterateThroughAll() ScreenUpdating = False Dim wks As Worksheet Set wks = ActiveSheet Dim rowRange As Range Dim colRange As Range Dim LastCol As Long Dim LastRow As Long LastRow = wks.Cells(wks.Rows.Count, "A").End(xlUp).Row Set rowRange = wks.Range("A1:A" & LastRow) 'Loop through each row For Each rrow In rowRange 'Find Last column in current row LastCol = wks.Cells(rrow, wks.Columns.Count).End(xlToLeft).Column Set colRange = wks.Range(wks.Cells(rrow, 1), wks.Cells(rrow, LastCol)) 'Loop through all cells in row up to last col For Each cell In colRange 'Do something to each cell Debug.Print (cell.Value) Next cell Next rrow ScreenUpdating = True End Sub