엑셀 VBA에서 UsedRange 속성은 특정 워크시트에서 사용된(데이터가 포함된) 범위를 반환하는 기능을 제공합니다.
즉, 빈 셀을 제외하고 실제 데이터가 있는 셀 범위를 자동으로 찾을 때 사용됩니다.
1. 기본 문법
Sheets("시트이름").UsedRange
|
- UsedRange → 해당 시트에서 데이터가 들어 있는 범위를 반환
📌 UsedRange는 첫 번째 데이터가 입력된 셀부터 마지막 데이터가 있는 셀까지의 범위를 반환
📌 숨겨진 셀이나 삭제된 데이터가 있을 경우 예상과 다를 수 있음
📌 UsedRange는 Ctrl + Shift + End를 누를 때 선택되는 영역과 비슷함
2. 현재 워크시트의 사용된 범위 확인
Sub 사용된범위_출력()
MsgBox "사용된 범위: " & ActiveSheet.UsedRange.Address
End Sub
|
📌 현재 워크시트에서 데이터가 있는 범위를 메시지 박스로 출력
3. 특정 시트의 사용된 범위 확인
Sub 특정시트_사용된범위()
MsgBox "Sheet1 사용된 범위: " & Sheets("Sheet1").UsedRange.Address
End Sub
|
📌 "Sheet1"의 사용된 범위를 확인
4. 사용된 범위의 데이터 개수 확인
Sub 사용된범위_셀개수()
MsgBox "사용된 셀 개수: " & ActiveSheet.UsedRange.Cells.Count
End Sub
|
📌 사용된 범위 내의 총 셀 개수를 메시지 박스로 출력
5. 사용된 범위의 행 개수 확인
Sub 사용된범위_행개수()
MsgBox "사용된 행 개수: " & ActiveSheet.UsedRange.Rows.Count
End Sub
|
📌 사용된 범위의 행 개수를 메시지 박스로 출력
6. 사용된 범위의 열 개수 확인
Sub 사용된범위_열개수()
MsgBox "사용된 열 개수: " & ActiveSheet.UsedRange.Columns.Count
End Sub
|
📌 사용된 범위의 열 개수를 메시지 박스로 출력
7. 사용된 범위의 첫 번째 셀 주소 확인
Sub 사용된범위_첫번째셀()
MsgBox "첫 번째 셀: " & ActiveSheet.UsedRange.Cells(1, 1).Address
End Sub
|
📌 사용된 범위의 첫 번째 셀의 주소를 출력
8. 사용된 범위의 마지막 행과 마지막 열 찾기
Sub 사용된범위_마지막셀()
Dim ws As Worksheet
Dim 마지막행 As Long, 마지막열 As Long
Set ws = ActiveSheet
마지막행 = ws.UsedRange.Rows(ws.UsedRange.Rows.Count).Row
마지막열 = ws.UsedRange.Columns(ws.UsedRange.Columns.Count).Column
MsgBox "마지막 행: " & 마지막행 & vbNewLine & "마지막 열: " & 마지막열
End Sub
|
📌 사용된 범위 내 마지막 행과 마지막 열 번호를 출력
9. 사용된 범위의 모든 데이터 복사
Sub 사용된범위_복사()
ActiveSheet.UsedRange.Copy Destination:=Sheets("Sheet2").Range("A1")
End Sub
|
📌 현재 시트의 사용된 범위를 "Sheet2"의 A1에 복사
10. 사용된 범위의 모든 데이터 삭제
Sub 사용된범위_삭제()
ActiveSheet.UsedRange.Clear
End Sub
|
📌 현재 워크시트의 사용된 범위 내 데이터를 모두 삭제
11. 사용된 범위의 서식만 삭제
Sub 사용된범위_서식삭제()
ActiveSheet.UsedRange.ClearFormats
End Sub
|
📌 사용된 범위 내 데이터는 유지한 채 서식(글꼴, 색상 등)만 삭제
12. 사용된 범위를 선택하기
Sub 사용된범위_선택()
ActiveSheet.UsedRange.Select
End Sub
|
📌 현재 워크시트에서 사용된 범위를 선택
13. 모든 시트에서 사용된 범위 출력
Sub 모든시트_사용된범위출력()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
Debug.Print ws.Name & ": " & ws.UsedRange.Address
Next ws
End Sub
|
📌 모든 시트의 사용된 범위를 즉석 창(Immediate Window)에 출력 (Ctrl + G 창에서 확인 가능)
14. 사용된 범위를 특정 위치로 이동
Sub 사용된범위_이동()
ActiveSheet.UsedRange.Cut Destination:=ActiveSheet.Range("B2")
End Sub
|
📌 사용된 범위를 B2 위치로 이동
15. 사용된 범위 내 빈 행 삭제
Sub 사용된범위_빈행삭제()
Dim rng As Range, cell As Range
Set rng = ActiveSheet.UsedRange
For Each cell In rng.Columns(1).Cells
If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then
cell.EntireRow.Delete
End If
Next cell
End Sub
|
📌 사용된 범위 내에서 빈 행을 자동 삭제
16. 사용된 범위 내 특정 단어 포함된 행 삭제
Sub 특정단어포함_행삭제()
Dim rng As Range, cell As Range
Set rng = ActiveSheet.UsedRange
For Each cell In rng.Columns(1).Cells
If InStr(1, cell.Value, "삭제") > 0 Then
cell.EntireRow.Delete
End If
Next cell
End Sub
|
📌 "삭제"라는 단어가 포함된 행을 삭제
17. 사용된 범위를 CSV 파일로 저장
Sub 사용된범위_CSV저장()
Dim ws As Worksheet
Dim 파일경로 As String
Set ws = ActiveSheet
파일경로 = "C:\Users\Public\사용된범위.csv"
ws.UsedRange.Copy
With CreateObject("Scripting.FileSystemObject").CreateTextFile(파일경로, True)
.Write Replace(Replace(WorksheetFunction.Transpose(Application.Transpose(ws.UsedRange.Value)), vbTab, ","), vbLf, vbCrLf)
.Close
End With
MsgBox "CSV 파일 저장 완료: " & 파일경로
End Sub
|
📌 사용된 범위를 CSV 파일로 저장 (,로 구분된 텍스트 파일 생성)
📝 정리
기능
|
VBA 코드
|
사용된 범위 주소 확인
|
ActiveSheet.UsedRange.Address
|
사용된 범위의 셀 개수 확인
|
ActiveSheet.UsedRange.Cells.Count
|
사용된 범위의 행 개수 확인
|
ActiveSheet.UsedRange.Rows.Count
|
사용된 범위의 열 개수 확인
|
ActiveSheet.UsedRange.Columns.Count
|
사용된 범위 삭제
|
ActiveSheet.UsedRange.Clear
|
사용된 범위 서식 삭제
|
ActiveSheet.UsedRange.ClearFormats
|
사용된 범위 선택
|
ActiveSheet.UsedRange.Select
|
사용된 범위를 특정 위치로 이동
|
ActiveSheet.UsedRange.Cut Destination:=Range("B2")
|
사용된 범위 내 빈 행 삭제
|
If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete
|
사용된 범위 내 특정 단어 포함된 행 삭제
|
If InStr(1, cell.Value, "삭제") > 0 Then cell.EntireRow.Delete
|
사용된 범위를 CSV로 저장
|
CreateTextFile(파일경로).Write Replace(WorksheetFunction.Transpose(ws.UsedRange.Value), vbTab, ",")
|
🔥 VBA의 UsedRange 속성을 활용하면 엑셀 데이터의 실제 사용 범위를 자동으로 감지하고 관리할 수 있습니다! 🚀