초보의 업무자동화

매번 셀 서식 수정하셨나요? 보고서 퀄리티 높이는 엑셀 VBA 8선

언제나 초보 2026. 7. 16. 10:27

보고서에 폰트가 3가지, 글자 크기가 제각각이라 인쇄만 하면 지저분해 보인 적 있으실 겁니다. 매번 셀 서식을 손으로 맞추는 대신, 한 번의 클릭으로 폰트·테두리·숫자 표시 형식을 전체 통일하는 매크로를 정리했습니다.

1. 전체 시트 폰트 일괄 통일하기

협업 파일을 넘겨받을 때 가장 먼저 실행하면 좋은 매크로입니다. 전체 셀을 선택해 원하는 서체와 크기로 일괄 변경합니다.

Sub 전체폰트_맑은고딕_통일()
    Cells.Select
    With Selection.Font
        .Name = "맑은 고딕"
        .Size = 10
        .Strikethrough = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .ThemeFont = xlThemeFontNone
    End With
    Application.CutCopyMode = False
    Range("A1").Select
End Sub
💡 Tip Cells.Select는 현재 활성 시트에만 적용됩니다. 전체 시트에 한번에 적용하려면 For Each ws In ActiveWorkbook.Worksheets로 감싸 반복 실행하세요.

2. 사용 범위에 테두리 자동 적용하기

표 전체에 테두리를 긋고, 정렬·줄바꿈·행 높이·인쇄 영역까지 한 번에 세팅하는 "보고서 완성용" 매크로입니다.

Sub 표서식_자동완성()
    Dim rng As Range
    Set rng = ActiveSheet.UsedRange

    With rng
        With .Borders(xlEdgeLeft): .LineStyle = xlContinuous: .Weight = xlThin: End With
        With .Borders(xlEdgeTop): .LineStyle = xlContinuous: .Weight = xlThin: End With
        With .Borders(xlEdgeBottom): .LineStyle = xlContinuous: .Weight = xlThin: End With
        With .Borders(xlEdgeRight): .LineStyle = xlContinuous: .Weight = xlThin: End With
        With .Borders(xlInsideVertical): .LineStyle = xlContinuous: .Weight = xlThin: End With
        With .Borders(xlInsideHorizontal): .LineStyle = xlContinuous: .Weight = xlThin: End With

        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Font.Name = "맑은 고딕"
        .Font.Size = 11
    End With

    rng.Columns.AutoFit
    rng.Rows.RowHeight = 25
    ActiveSheet.PageSetup.PrintArea = rng.Address
End Sub

3. 0은 안 보이게, 음수는 빨간색으로

회계/정산 자료에서 자주 쓰는 표시 형식입니다. 실제 값은 그대로 두고, "표시"만 바꾸는 방식이라 수식에는 전혀 영향을 주지 않습니다.

Sub 회계서식_0숨김_음수빨강()
    Selection.NumberFormat = "[BLACK]0;[RED]-0;;@"
End Sub

4. 소수점 자리수 자동 통일하기(백분율)

백분율 표시가 뒤죽박죽(0.00% / 0.0% / 0%)일 때, 특정 형식을 찾아 원하는 자리수로 일괄 변경합니다.

Sub 백분율_소수점자리수_통일()
    Dim cell As Range
    Dim ws As Worksheet
    Set ws = ActiveSheet

    For Each cell In ws.UsedRange
        If IsNumeric(cell.Value) And cell.NumberFormat Like "0.00%" Then
            cell.NumberFormat = "0.0%"
        End If
    Next cell

    MsgBox "백분율 표시 형식이 통일되었습니다!", vbInformation
End Sub

5. 지수표기(E+10) 강제로 숫자로 바꾸기

바코드, 제조번호처럼 자릿수가 긴 숫자를 붙여넣으면 엑셀이 자동으로 1.23E+15 같은 지수 표기로 바꿔버립니다. 아래 매크로로 전체 시트를 검사해서 정상 숫자 표시로 되돌립니다.

Sub 지수표기_숫자로변경()
    Dim ws As Worksheet
    Dim cell As Range

    For Each ws In ActiveWorkbook.Worksheets
        For Each cell In ws.UsedRange
            If IsNumeric(cell.Value) Then
                cell.NumberFormat = "0"
            End If
        Next cell
    Next ws

    MsgBox "지수표기가 모두 숫자 서식으로 변경되었습니다!", vbInformation
End Sub
⚠️ 주의 자릿수가 15자리를 넘는 숫자(카드번호, 일부 바코드 등)는 엑셀 자체 부동소수점 한계로 16자리 이후가 0으로 손실됩니다. 이런 값은 처음부터 텍스트 서식으로 입력해야 합니다.

6. 셀 안 줄바꿈 흔적 제거하기

다른 시스템에서 복사해온 데이터에 보이지 않는 줄바꿈(Alt+Enter, 개행문자)이 섞여 있으면 필터·정렬이 꼬입니다. 아래 매크로로 선택 영역의 줄바꿈만 깔끔히 제거합니다.

Sub 셀내_줄바꿈제거()
    Dim cell As Range
    For Each cell In Selection
        If Not IsEmpty(cell.Value) Then
            cell.Value = Replace(cell.Value, vbLf, "")
            cell.Value = Replace(cell.Value, vbCr, "")
        End If
    Next cell
    Selection.Columns.AutoFit
End Sub

7. 열 너비·행 높이 자동 맞춤

내용 길이에 맞춰 열 너비를 자동 조정하고 싶을 때, 선택 영역만 빠르게 처리합니다.

Sub 선택열_자동맞춤()
    Selection.EntireColumn.AutoFit
End Sub

Sub 행높이_일괄지정()
    Dim h As Variant
    h = Application.InputBox("행 높이를 입력하세요", "행 높이 설정", Type:=1)
    If h = False Then Exit Sub
    If Not IsNumeric(h) Or h <= 0 Then
        MsgBox "올바른 숫자를 입력하세요.": Exit Sub
    End If
    ActiveSheet.UsedRange.Rows.RowHeight = h
End Sub

8. 추가로 만들면 좋은 매크로

매크로용도

미사용 스타일(Cell Style) 일괄 삭제 다른 파일에서 복사해올 때 딸려온 불필요한 스타일 수백 개를 정리해 파일 용량 감소
조건부 서식 일괄 복사/삭제 기준 시트의 조건부 서식을 여러 시트에 동일하게 적용
이미지 용량 자동 압축 붙여넣은 스크린샷 때문에 파일 용량이 커졌을 때 크기를 표준화

❓ 자주 묻는 질문 (FAQ)

Q. 서식만 바꿨는데 파일 용량이 갑자기 커졌어요.
A. 서식 자체보다는, 다른 파일에서 복사해온 셀 스타일(Cell Style)이나 조건부 서식 규칙이 겹겹이 쌓이면서 용량이 커지는 경우가 많습니다. "추가로 만들면 좋은 매크로"의 미사용 스타일 삭제 매크로를 함께 활용하세요.
Q. 숫자 서식을 바꿨는데 계산 결과가 달라졌어요.
A. 표시 형식(NumberFormat)은 셀에 저장된 실제 값을 바꾸지 않습니다. 화면에 반올림되어 보이는 것과 실제 계산에 쓰이는 값이 다를 수 있으니, 계산 결과가 이상하다면 셀 값을 직접 확인해보세요.
Q. 매크로 실행 후 undo(Ctrl+Z)가 안 먹어요.
A. VBA로 실행한 서식 변경은 대부분 되돌리기가 지원되지 않습니다. 서식 관련 매크로는 실행 전 파일을 복사해두는 습관을 들이세요.

 

마무리

엑셀에서는 데이터를 정리하는 시간보다 서식을 맞추는 데 더 많은 시간을 쓰는 경우가 의외로 많습니다. 특히 여러 사람이 함께 작업한 파일은 폰트와 글자 크기, 숫자 표시 형식, 테두리까지 제각각이라 마지막 보고서를 정리하는 데 불필요한 시간이 계속 소모됩니다.

저 역시 처음에는 셀 서식을 하나씩 수정하면서 작업했지만, 같은 작업이 반복될수록 자동화의 필요성을 크게 느꼈습니다. 자주 사용하는 서식 작업을 VBA 매크로로 만들어 두고 사용한 이후에는 보고서를 정리하는 시간이 눈에 띄게 줄었고, 문서의 완성도도 훨씬 일정하게 유지할 수 있었습니다.

이번에 소개한 매크로들은 화려한 기능보다는 실무에서 가장 자주 반복되는 작업을 빠르게 처리하는 데 초점을 맞췄습니다. 하나만 적용해도 업무가 편해지고, 필요한 기능을 조금씩 추가해 나가면 자신만의 자동화 도구를 만들 수 있습니다.

반복되는 서식 작업은 한 번만 자동화해도 이후에는 계속 시간을 절약할 수 있습니다. 자주 사용하는 서식 정리 작업이 있다면 직접 매크로로 만들어 보세요. 생각보다 훨씬 적은 노력으로 업무 효율을 높일 수 있다는 것을 체감하게 될 것입니다.