programing

채워진 행을 통해 반복

stoneblock 2023. 4. 19. 21:52

채워진 행을 통해 반복

그래서 VBA를 사용하여 Excel 스프레드시트의 워크시트를 반복하려고 합니다.각 행과 컬럼을 반복하고 싶습니다.구글 검색에도 불구하고 직관적인 방법을 찾을 수 없습니다.

행의 첫 번째 셀은 채워져야 하며, 채워지지 않으면 거기서 끝나야 합니다.나는 이것을 강제할 수 있다.

현재 방법은 행을 반복한 후 첫 번째 셀의 값을 구하려고 하지만 알 수 없습니다.범위 등을 사용하는 몇 가지 질문은 있습니다만, 코드 작성에 도움이 되는 것은 없습니다.

현재의 접근방식은 다음과 같습니다.

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 Loop의 첫 번째 행에서 무엇을 변경하여 올바르게 끊을 수 있습니까?

유사한 항목을 찾는 사용자의 이점은 워크시트를 참조하십시오..UsedRange,
예.? ActiveSheet.UsedRange.Rows.Count
및 루프와 같은
For Each loopRow in Sheets(1).UsedRange.Rows: Print loopRow.Row: Next

행과 열을 하드 코딩한 것 같습니다. 그렇지 않으면 몇 가지 작은 수정이 있을 것입니다. 그리고 제 생각에 당신은 거기에 있는 것 같습니다.

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)

나는 대답에서 몇 가지 가정을 할 것이다.데이터가 A1에서 시작되고 각 행의 첫 번째 열에는 데이터가 있는 빈 셀이 없다고 가정합니다.

이 코드는 다음과 같습니다.

  1. A열에서 데이터가 있는 마지막 행을 찾습니다.
  2. 각 행을 루프합니다.
  3. 데이터가 있는 현재 행의 마지막 열 찾기
  4. 현재 행의 각 셀을 마지막 열까지 루프합니다.

이것은 빠른 방법은 아니지만, 당신이 제안한 대로 각각의 방법을 반복할 것입니다.


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

언급URL : https://stackoverflow.com/questions/24377197/iterating-through-populated-rows