Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 마지막 행과 열의 수 찾기

엑셀(Excel)/VBA
반응형

VBA 코드로 시트에서 행과 열에 연속된 데이터가 몇 개가 있는지 측정해 보겠습니다. 빈칸이 있는 곳까지 개수를 세게 됩니다. 이것이 중요한 이유는 시트에 데이터가 몇 개인지 알아야 반복문을 돌릴 수 있기 때문입니다. 이 방법을 알고 있으면 데이터가 늘어나더라도 소스는 변경할 필요가 없습니다. 출력값은 가로와 세로의 데이터 개수입니다. 

 

 

 

첫 번째는 행의 개수를 알아내는 것입니다. Cells() 함수로 제일 하단 셀 번호를 지정합니다. 행의 끝 번호를 정확하게 지정하기 힘들지만 Rows.Count 로 알아 올 수 있습니다. 그리고 End() 함수로 아래에서 위로 훍어오는 것이죠. 그 상수값이 xlUp 입니다. 만약 위에서 아래로 내려간다면 xlDown 이 되겠죠. 아래 샘플 소스를 실행한 결과는 사용한 행의 개수를 알려 주고 있습니다.

Sub colrownum()
    Dim lastRow As Long
    lastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    MsgBox "1번행의 개수: " & lastRowEnd Sub

 

엑셀 VBA 마지막 행과 열의 수 찾기

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 Excel VBA 개발을 위한 개발 도구 추가하기
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기
엑셀 VBA 개발할 로그 출력하는 방법
셀 VBA GoTo 이용해서 줄로 분기하기

 

 

 

다음은 열의 개수를 알아보겠습니다. 행과 반대로 Cells() 함수에서 셀을 지정할 때 열 번호에 해당하는 인수로 Columns.Count 를 넘깁니다. 그럼 열의 오른쪽 끝지점 부터 왼쪽으로 오면서 개수를 세면 되겠죠. 그렇게 진행할 수 있도록 End() 함수의 인자로 xlToLeft 를 입력합니다. 반대는 xlToRight 입니다.

 

Sub colrownum2()
    Dim lastColumn As Long
    lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
    MsgBox "1번열의 개수 : " & lastColumnEnd Sub

 

엑셀 VBA 마지막 행과 열의 수 찾기

 

다음은 End() 함수와 상수값을 조합해서 알아오는 것이 아니라 Rows.Count Columns.Count 로 셀에서 사용하고 있는 영역의 수를 알아 오는 방법입니다. 그런데 위에서 사용한 Rows.Count 와 어떻게 다를까요? 위에서 사용한 Rows.Count 는 셀에서 열이 허용하는 전체 개수를 가져옵니다. 아마 16,000 이 넘을 겁니다. 그런데 아래에 쓰인 Rows.Count 는 사용한 영역 개수인 7개만 가져올 옵니다. 그 차이는 UsedRange 때문입니다. 현재 사용한 셀의 영역을 리턴하는 함수입니다. 아래 샘플 그림에서 예를 들자면 UsedRange A1:H7 을 영역 객체를 가져옵니다. 이 안에서 Rows.Count 를 측정하기 때문에 당연히 7 이 리턴되겠죠. 열을 나타내는 Rows.Count 도 마찬가지 입니다.

 

Sub colrownum3()
    With Sheet1.UsedRange
        MsgBox .Rows.Count & " rows and " & .Columns.Count & " columns"
    End With
End Sub

 

엑셀 VBA 마지막 행과 열의 수 찾기

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 Excel VBA 개발을 위한 개발 도구 추가하기
엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기
엑셀 VBA 개발할 로그 출력하는 방법
셀 VBA GoTo 이용해서 줄로 분기하기
반응형
Posted by 녹두장군1
,