마지막셀 주소 찾기

마지막 셀을 찾는 작업은 항상 중요한 것 같다. CURRENTREGIONUSEDRANGE, END 정도면 충분할까?
시트에 사용된 마지막 셀을 찾아봤다.

myimg



Sub LastCellNum()

Dim sht As Worksheet
Dim LastRow As Integer
Dim LastColumn As Integer

Set sht = ThisWorkbook.Worksheets("Sheet1")

LastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row
LastColumn = sht.UsedRange.Columns(sht.UsedRange.Columns.Count).Column

MsgBox "마지막셀은 " & LastRow & "번째 행, " & LastColumn & "번째열 입니다."

End Sub


RANGE 문제있는 시트 찾기

엑셀 파일의 용량이 커지는 이유는 많겠지만, USEDRANGE가 잘못 설정되는 경우가 많다. 한마디로 말하면, CTRL이나 SHIFT 단축키 치다가 실수로 10만번째 행이 사용중인 영역으로 인식되는 경우라 하겠다.

서너개의 시트로 구성된 파일이라면, 일일이 CTRL+END키로 USEDRANGE를 체크하면 되겠지만, 워크시트가 스무개가 넘어가면, 그 또한 일이다.

myimg



과거 USEDRANGE의 마지막 셀주소를 찾는 글을 쓴 적이 있는데, 아주 약간만 변형해서, 사용해 본다.

myimg



왼쪽부터 SHEET INDEX, 마지막 셀의 ROW(행), COLUMN(열), SHEETNAME 순서로 나온다. 귀찮아서, HEAD는 안붙였다.
아래 예시에서 보면, Sheet1번의 마지막 행이 이상하다는 걸 알수 있다.

myimg



물론, 용량이 커지는 이유가 이것 때문이라고 할수는 없지만, 가능성은 열어두자.

Sub LastCellNumBySheet()

Dim sht As Worksheet
Dim LastRow As Integer
Dim LastColumn As Integer

For x = 1 To Worksheets.Count

Set sht = ThisWorkbook.Worksheets(x)

Cells(x + 1, 4) = x
Cells(x + 1, 5) = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row
Cells(x + 1, 6) = sht.UsedRange.Columns(sht.UsedRange.Columns.Count).Column
Cells(x + 1, 7) = sht.Name

Next x

End Sub

이후에 차차 업그레이드를 해보자고.

끝.