使用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开始,并且在每一行有数据的第一列没有空单元格。
此代码将:
- 查找列A中具有数据的最后一行
- 循环通过每一行
- 用数据查找当前行的最后一列
- 遍历当前行中的每个单元格直到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