엑셀 VBA 마지막 셀 찾는 방법 :: 명령문 스니펫
엑셀 VBA 마지막 셀 찾기 목차 바로가기
명령문 스니펫
전체 시트에서 마지막 셀 찾기 (대부분의 상황에서 사용가능)
With ThisWorkBook.WorkSheets("시트명") ' 사용된 모든 범위에서 마지막셀을 찾습니다. Dim endRow As Long ' 마지막행 Dim endCol As Long ' 마지막열 endRow = .UsedRange.Rows.Count + .UsedRange.Row - 1 endCol = .UsedRange.Columns.Count + .UsedRange.Column - 1 End With
특정 행/열에서 마지막셀 찾기
With ThisWorkBook.WorkSheets("시트명") ' 특정 행/열에서 마지막셀을 찾습니다. Dim endRow As Long ' 마지막행 Dim endCol As Long ' 마지막열 endRow = .Cells(.Rows.Count, 1).End(xlUp).Row endCol = .Cells(1, .Columns.Count).End(xlToLeft).Column End With
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [엑셀위키] 시트 마지막셀 찾기 (마지막 행/열 번호 반환)예제파일
명령문 요약
시트에서 사용된 전체 범위 또는 특정 행/열에서 마지막 셀을 찾은 뒤, 셀의 행/열 번호를 반환합니다.
VBA 마지막 셀 찾기 사용 예제
특정 시트의 마지막 셀을 찾은 뒤, 마지막셀의 셀주소, 행번호, 열번호를 메세지박스로 출력하는 명령문을 작성합니다.
Sub Print_FinalCell() Dim sShtName As String sShtName = "시트1" ' 시트명을 입력합니다. With ThisWorkbook.Worksheets(sShtName) Dim endRow As Long Dim endCol As Long Dim endCell As String endRow = .UsedRange.Rows.Count + .UsedRange.Row - 1 endCol = .UsedRange.Columns.Count + .UsedRange.Column - 1 endCell = .Cells(endRow, endCol).Address End With MsgBox sShtName & "의 마지막셀은 " & endCell & "입니다." & vbNewLine & _ "행 번호는 " & endRow & "이고, 열번호는 " & endCol & "입니다." End Sub
엑셀 마지막 셀 찾기 명령문의 동작원리
1. Range의 End 속성은 Ctrl + Shift + 방향키 동작을 수행합니다.
Ctrl + Shift + 방향키는 기준셀에서 연결된 범위의 마지막 셀까지 이동하는 동작을 수행합니다. 자세한 내용은 아래 관련포스트를 참고하세요.
End 속성은 총 4개의 방향으로 이동할 수 있으며, 입력 가능한 값은 아래와 같습니다.
- Range.End(xlToLeft) : 왼쪽으로 이동
- Range.End(xlToRight) : 오른쪽으로 이동
- Range.End(xlToUp) : 아래로 이동
- Range.End(xlToDown) : 위로 이동
관련링크 : MS 홈페이지 VBA Range End 속성 상세설명 바로가기
2. Sheet 의 UsedRange 속성은 시트에서 사용된 전체 범위를 반환합니다.
예를들어, [ 시트1 ] 의 B2:C14 범위를 사용했다면, 명령문은 아래와 같이 동작합니다.
- ' B2:C14 범위를 반환합니다.
Set rng = ThisWorkBook.WorkSheets("시트1").UsedRange - ' 범위에서 사용된 행의 개수인 13을 반환합니다.
endRow = rng.Rows.Count - ' 범위가 시작되는 행번호인 2를 반환합니다.
startRow = rng.Row - ' 범위의 마지막 행 번호인 14를 반환합니다. 열번호도 동일한 원리로 동작합니다.
endRow + startRow - 1 -> 13 + 2 - 1 -> 14
관련링크 : MS 홈페이지 VBA Sheet UsedRange 속성 상세설명 바로가기
3. Sheet 의 Rows.Count / Columns.Count 속성은 시트의 전체 행/열 개수를 반환합니다.
시트에서 사용가능한 전체 행/열의 개수는 엑셀 버전마다 다릅니다.
엑셀버전 최대 행 최대 열 2003 이전 65,536 256 2007 이후 1,038,576 16,384 현재는 대부분 엑셀 2007 이후 버전을 이용하고 있으므로, 최대 행번호와 열번호를 각각의 숫자(1,038,565 / 16,384)로 입력해도 괜찮습니다.
하지만 엑셀 2003 에도 매크로가 사용 될 수 있는 만약의 상황을 대비하여 Rows.Count 와 Columns.Count 속성을 사용하는 것이 좋으며, .Count 속성을 사용할 경우 작성한 코드가 더욱 깔끔해지는 일석이조 효과를 볼 수 있습니다.