-
[Excel] VBA 행/열 자동 맞춤업무 자동화/Excel 2026. 1. 26. 09:20
업무용 엑셀을 다루다 보면 열 너비/행 높이가 내용에 비해 좁아서 잘리거나, 반대로 불필요하게 넓어서 보기 불편한 경우가 자주 생깁니다.
이번 글에서는 VBA로 열/행 AutoFit을 한 번에 정리할 수 있는 매크로를 선택영역/현재 시트/전체 시트으로 정리하고,
바로 실행해볼 수 있는 샘플 파일 구성 방법까지 함께 안내합니다.
샘플 파일은 글 아래에서 확인하실 수 있습니다.
요약
- 선택 영역 기반 자동 맞춤 구성
- 현재 시트 UsedRange 기반 자동 맞춤 구성
- 모든 시트 UsedRange 기반 일괄 자동 맞춤 구성
- WrapText/병합 셀 등 AutoFit 예외 사항 정리
- 샘플 파일로 실행 검증 절차 정리
단어 의미
- AutoFit(자동 맞춤): 셀 내용 길이에 맞춰 열 너비/행 높이를 자동 조정하는 기능
- UsedRange(사용 영역): 시트에서 실제로 사용된 범위를 Excel이 추정하는 영역
- WrapText(자동 줄바꿈): 셀 너비에 맞춰 텍스트를 여러 줄로 표시하는 옵션
- Merged Cells(병합 셀): 여러 셀을 하나로 합친 셀(일부 AutoFit 동작이 제한될 수 있음)
1. 요구사항 정리
구성 목표는 아래와 같습니다.
- 버튼/리본을 따로 만들지 않아도 매크로 실행만으로 열/행이 깔끔하게 정리될 것
- 상황에 맞게 선택할 수 있도록 3가지 범위 옵션 제공
- 선택 영역(Selection)
- 현재 시트(ActiveSheet)
- 전체 시트(ThisWorkbook 전체)
- 대용량 시트에서도 무리 없이 돌릴 수 있도록 필요 시 ScreenUpdating 끄기 등 기본 최적화 포함
2. 전체 동작 구조
VBA 구성은 간단하게 “표준 모듈”에 매크로 3개를 넣는 방식입니다.
1) 표준 모듈(Module)
AutoFit_Selection: 선택한 범위 기준으로 열/행 AutoFitAutoFit_ActiveSheet_UsedRange: 활성 시트의 UsedRange 기준으로 열/행 AutoFitAutoFit_AllSheets_UsedRange: 통합문서 전체 시트에 대해 UsedRange 기준으로 열/행 AutoFit
3. VBA 코드: 표준 모듈에 붙여넣기
3-1) 선택 영역 AutoFit
- 선택한 셀 범위를 기준으로, 그 범위가 포함된 행/열 전체를 AutoFit 합니다.
- (실무에서는 “부분 선택 후 해당 열만 정리”할 때 가장 자주 씁니다.)
Option Explicit '1) 선택한 범위만 AutoFit Sub AutoFit_Selection() On Error GoTo EH If TypeName(Selection) = "Range" Then Dim rng As Range Set rng = Selection rng.EntireColumn.AutoFit rng.EntireRow.AutoFit End If Exit Sub EH: MsgBox "AutoFit 중 오류: " & Err.Description, vbExclamation End Sub
3-2) 현재 시트(UsedRange) AutoFit
- 현재 시트에서 “사용 중인 영역”을 기준으로 정리합니다.
- “시트 전체”를 잡는 것보다 부담이 적고, 대부분의 업무용 파일에 잘 맞습니다.
'2) 현재 활성 시트 UsedRange 기준 AutoFit Sub AutoFit_ActiveSheet_UsedRange() On Error GoTo EH With ActiveSheet.UsedRange .EntireColumn.AutoFit .EntireRow.AutoFit End With Exit Sub EH: MsgBox "AutoFit 중 오류: " & Err.Description, vbExclamation End Sub
3-3) 모든 시트(UsedRange) AutoFit
- 통합문서 전체 시트를 한 번에 정리합니다.
- (월간 보고서, 여러 탭으로 나뉜 데이터 정리할 때 유용)
'3) 모든 시트 UsedRange 기준 AutoFit Sub AutoFit_AllSheets_UsedRange() On Error GoTo EH Dim ws As Worksheet Application.ScreenUpdating = False For Each ws In ThisWorkbook.Worksheets With ws.UsedRange .EntireColumn.AutoFit .EntireRow.AutoFit End With Next ws Application.ScreenUpdating = True Exit Sub EH: Application.ScreenUpdating = True MsgBox "AutoFit 중 오류: " & Err.Description, vbExclamation End Sub
4. 특정 열만 AutoFit
“전체 정리”가 아니라 특정 열만 정리하고 싶을 때는 아래처럼 간단히 쓸 수 있습니다.
'예: A:D 열만 AutoFit Sub AutoFit_Columns_AD() Columns("A:D").AutoFit End Sub
5. AutoFit이 기대와 다르게 동작하는 경우(실무 팁)
5-1) 병합 셀(Merged Cells)
- 병합 셀이 포함된 범위에서는 AutoFit이 원하는 결과가 안 나올 수 있습니다.
- 가능하면 병합을 최소화하고, 대신 “가운데 맞춤(선택 영역)” 같은 서식으로 대체하는 편이 안정적입니다.
5-2) 행 AutoFit + WrapText
- 행 높이 AutoFit은 WrapText(줄바꿈) 여부에 크게 영향을 받습니다.
- 줄바꿈을 켠 셀은 텍스트 길이에 따라 행이 커질 수 있으니, 보고서/양식 목적이라면 “줄바꿈 규칙”을 먼저 통일해두는 게 좋습니다.
5-3) UsedRange가 실제보다 크게 잡히는 현상
- 셀을 한 번 사용했다가 지우면 UsedRange가 남는 경우가 있습니다.
- 이때는 “불필요하게 넓은 범위”까지 AutoFit이 걸릴 수 있어요.
(정리 방법: 불필요한 행/열 삭제 → 저장 → 다시 열기 등으로 개선되는 경우가 많습니다.)
6. 샘플 파일로 바로 테스트하는 방법
아래 순서대로 하면 “AutoFit 전/후 변화”가 바로 눈에 보입니다.
1) 샘플 파일을 준비합니다(예:
AutoFit_Test_Sample.xlsx)
2) Excel에서 파일을 연 다음, 다른 이름으로 저장 → .xlsm(매크로 사용 통합문서) 로 저장
3)Alt + F11→ VBA 편집기 열기
4) 삽입(Insert) → 모듈(Module) 추가
5) 위의 매크로 코드를 붙여넣고 저장
6) Excel로 돌아와서Alt + F8→ 실행할 매크로 선택 → 실행
'업무 자동화 > Excel' 카테고리의 다른 글
[Excel] 실무에서 가장 많이 쓰는 붙여넣기 옵션 6가지 (Ctrl 붙여넣기) (0) 2026.01.05 [Excel] Application.OnTime 기반 자동 저장(버전 저장) 매크로 (0) 2025.12.22 [Excel] 기준 날짜(I2) + E열 입력으로 G열 날짜 색상 자동 표시하기 (0) 2025.12.12 [Excel] 열의 시작 셀에서 마지막 셀 선택하기 (0) 2025.11.10 [Excel] 매크로 편집 시 [숨기기 취소] 오류 문제 해결 (0) 2025.11.07