마지막 셀 찾는 방법 총 정리 (마지막 행/열 반환) :: 엑셀 위키

VBA 매크로로 시트의 마지막 셀을 찾는 방법을 알아봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2020. 05. 21. 04:32
URL 복사
메모 남기기 : (9)

엑셀 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 속성을 사용할 경우 작성한 코드가 더욱 깔끔해지는 일석이조 효과를 볼 수 있습니다.

5 5 투표
게시글평점
9 댓글
Inline Feedbacks
모든 댓글 보기
9
0
여러분의 생각을 댓글로 남겨주세요.x