오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
실무자 기초 강의

엑셀 행/열 자동맞춤, 원클릭으로 해결하기

오빠두엑셀 by 오빠두엑셀
  • 학습시간 5분
  • 난이도 중급
  • 작성일 2020.07.15

간단한 매크로를 활용하여 나만의 행/열 자동맞춤 리본버튼 만들기!

이 강의에서는 매크로 녹화와 개인용 매크로 통합 문서를 활용해 행과 열의 크기를 셀 값에 맞춰 자동으로 정렬하는 매크로를 직접 만드는 방법을 다룹니다. 작성한 매크로를 리본 메뉴에 버튼으로 등록하면, 작업 중 언제든 클릭 한 번으로 모든 시트에서 일관된 셀 정렬을 적용할 수 있습니다.

엑셀 행/열 자동맞춤, 원클릭으로 해결하기
DOWNLOADS

실습자료를 준비했어요

수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇

엑셀 행 높이 자동 맞춤, 클릭 1번으로 해결하는 방법!

엑셀에서 셀에 입력된 값에 맞춰 행렬 크기를 자동으로 정렬하는 방법은 크게 3가지가 있습니다.

행 높이/열 넓이를 드래그하여 직접 조절하기
  1. 시트 화면의 머리글(알파벳 또는 숫자)을 클릭하여 변경하려는 전체 행 또는 열을 선택합니다.

    열 선택

  2. 마우스 커서를 선택된 행/열의 가장자리로 이동하면 커서가 좌우 화살표로 변경됩니다.

    마우스 커서 이동

  3. 이 상태에서 마우스를 드래그하면 행 높이와 열 넓이를 자유롭게 조절할 수 있습니다.

    열 넓이 직접 조절

여러 개의 행 높이/열 넓이를 한 번에 동일하게 변경하기
  1. 변경하려는 여러 개의 행 또는 열을 선택합니다. (Ctrl 키를 누른 채로 선택하면 떨어져 있는 행/열도 함께 선택할 수 있습니다.)

    여러개 행 열 선택

  2. 마우스 커서를 선택된 행/열의 가장자리로 이동한 뒤 드래그하면 여러 개의 행 높이/열 넓이가 한 번에 동일한 크기로 변경됩니다.

    모든 열 넓이 동일하게 변경

여러 개의 행 높이/열 넓이를 셀에 입력된 값에 맞춰 자동으로 변경하기
  1. 변경하려는 여러 개의 행 또는 열을 선택합니다.

    여러 행 열 선택

  2. 마우스 커서를 선택된 행/열의 가장자리로 이동한 뒤, 좌우 화살표 모양으로 변경되면 마우스 왼쪽 버튼을 더블클릭합니다.

    마우스 커서 더블클릭

  3. 선택된 행 높이와 열 넓이가 셀에 입력된 값에 맞춰 자동으로 조절됩니다.

    엑셀 행 높이 자동 맞춤 gif

원클릭 행 높이 자동 맞춤 버튼 만들기

Microsoft 365 이전 버전에서는 행/열 넓이를 자동 맞춤할 때 셀 주변에 여백이 들어가지 않아 셀 간격이 매우 좁게 정렬되는 문제가 있었습니다. Microsoft 365 (2020년 7월 기준) 에서는 이 부분이 개선되어, 자동 맞춤 시 셀 주변에 적절한 여백이 들어가도록 변경되었습니다.

이번 강의에서는 엑셀 버전과 상관없이 버튼 클릭 한 번으로 원하는 여백을 적용하여 행 높이를 자동 맞춤하는 방법을 알아봅니다.

  1. 엑셀 화면 상단의 개발도구 - 매크로 기록, 또는 화면 좌측 하단의 매크로 녹화 버튼을 클릭합니다. 화면에 개발도구 탭이 보이지 않는다면 아래 개발도구 활성화 방법 관련 링크를 참고합니다.

    개발도구 매크로 기록

  2. 매크로 기록 창이 나타나면 매크로 저장 위치를 '개인용 매크로 통합 문서'로 선택한 뒤 '확인'을 클릭합니다.

    개인용 매크로 통합문서 선택

  3. 다시 개발도구에서 '기록 중지'를 클릭하거나, 화면 좌측 하단의 네모 버튼을 클릭하여 매크로 녹화를 중단합니다.

    매크로 기록 중지

  4. 개발도구의 'Visual Basic' 버튼을 클릭하거나 단축키 Alt + F11을 눌러 매크로 편집기로 이동합니다.

    행 높이 자동 맞춤 매크로 편집기

  5. 프로젝트 창에서 PERSONAL.XLSB - 모듈 - Module1 을 더블클릭합니다.

    행 높이 자동 맞춤 모듈 이동

  6. 기존에 녹화된 매크로를 모두 지운 뒤, 아래 명령문을 복사하여 모듈 안에 붙여넣기 합니다.
    Sub 행열맞춤()
     
    On Error Resume Next
     
    Dim rng As Range
    Dim cGap As Long: cGap = 1   '<-- 좌우간격을 조절합니다.
    Dim rGap As Long: rGap = 3   '<-- 상하간격을 조절합니다.
     
    Selection.EntireColumn.AutoFit
    Selection.EntireRow.AutoFit
     
    For Each rng In Selection.Rows(1).Cells
        With rng
            .EntireColumn.ColumnWidth = .EntireColumn.ColumnWidth + cGap
        End With
    Next
     
    For Each rng In Selection.Columns(1).Cells
        With rng
            .EntireRow.RowHeight = .EntireRow.RowHeight + rGap
        End With
    Next
     
    End Sub
  7. 엑셀 화면으로 돌아온 뒤, 파일 - 옵션 - 리본 사용자 지정 - 홈의 [+] 버튼을 클릭합니다.

    리본 사용자 지정 리본 추가

  8. 맞춤을 선택한 뒤 '새 그룹'을 추가합니다. 이어서 '이름 바꾸기'를 클릭하여 그룹 이름을 '행열맞춤'으로 변경합니다.

    행 높이 자동 맞춤 리본 버튼 추가

  9. 좌측의 명령 선택을 '매크로'로 변경한 뒤 '행열맞춤'을 선택합니다. '추가 >>' 버튼을 클릭하여 행열맞춤 매크로를 행열맞춤 그룹에 추가합니다.

    행 높이 자동 맞춤 매크로 추가

  10. 추가된 매크로를 선택한 뒤, '이름 바꾸기' 버튼을 클릭하여 원하는 이름과 아이콘으로 변경합니다.

    행열 맞춤 이름 변경

  11. '확인'을 눌러 옵션 창을 닫으면, 홈 탭에 '행열맞춤' 버튼이 추가됩니다.

    행 높이 자동 맞춤 버튼 추가 완료

  12. 이제 원하는 범위를 선택한 뒤 해당 버튼을 클릭하면 선택된 범위의 행 높이가 자동으로 맞춤됩니다.

    엑셀 행 높이 자동 맞춤 완성 gif

자주 묻는 질문

Q1. 행 높이 자동 맞춤 기능으로 적용되는 여백을 조절할 수 있나요?

행열맞춤 명령문의 cGap 과 rGap 값을 조절하면 행렬 여백을 변경할 수 있습니다. cGap 은 좌우 간격, rGap 은 상하 간격을 의미하며, 값을 키울수록 셀 주변 여백이 넓어집니다.

Sub 행열맞춤()
 
On Error Resume Next
 
Dim rng As Range
Dim cGap As Long: cGap = 1   '<-- 좌우간격을 조절합니다.
Dim rGap As Long: rGap = 3   '<-- 상하간격을 조절합니다.
 
Selection.EntireColumn.AutoFit
Selection.EntireRow.AutoFit
 
For Each rng In Selection.Rows(1).Cells
    With rng
        .EntireColumn.ColumnWidth = .EntireColumn.ColumnWidth + cGap
    End With
Next
 
For Each rng In Selection.Columns(1).Cells
    With rng
        .EntireRow.RowHeight = .EntireRow.RowHeight + rGap
    End With
Next
 
End Sub
Q2. PERSONAL.XLSB 통합 문서 사용을 중단하고 싶습니다. 어떻게 삭제하나요?

PERSONAL (개인용 매크로 통합 문서) 은 사용자 시작 위치에 자동 저장됩니다. 아래 순서에 따라 해당 경로로 이동하여 PERSONAL 통합 문서를 삭제할 수 있습니다.

  1. 파일 - 옵션 - 보안 센터 - 보안 센터 설정으로 이동합니다.

    엑셀 옵션 보안센터 이동

  2. 신뢰할 수 있는 위치 - Excel 기본 위치 : 사용자 시작 - '수정' 버튼을 클릭합니다.

    신뢰할 수 있는 위치

  3. 표시된 경로를 복사한 뒤 엑셀을 종료합니다. (엑셀이 완전히 종료되어 있어야 PERSONAL 통합 문서를 삭제할 수 있습니다.)

    경로 복사

  4. 윈도우키 + E로 파일 탐색기를 실행합니다. 복사한 경로를 탐색기 주소창에 붙여넣은 뒤, PERSONAL 통합 문서를 삭제합니다.

    PERSONAL 통합문서 삭제

댓글 36
4.8 (19개 평가)
굴레악
굴레악 2020.07.15 22:36
표 만들기로 사용 시, 중간에 삽입하다 보면 너비까지 복제돼 표 레이아웃이 변경될 때도 있는데 그럴 때 사용하면 좋겠네요.
오빠두엑셀
오빠두엑셀 작성자 2020.07.16 00:10
헛..! 표 기능에도 사용하면 편리하겠군요. 생각치 못했던 부분인데, 좋은 응용방법 하나 배워갑니다~'-'!
사랑의신
사랑의신 2020.07.16 00:52
매크로라 그런지 뒤로가기(undo)가 안되네요. 데이터 강좌에서 본 것 같은데 잘 안되서 포기 했었거든요. 이것도 좀 부탁드립니다.
오빠두엑셀
오빠두엑셀 작성자 2020.07.16 01:09
안녕하세요?
아쉽게도 해당 동작은 '뒤로가기'를 할 수 없습니다.ㅜ-ㅜ;
하지만, 만약 '셀 넓이'만 복구하는 작업이 필요하시다면, 기존의 셀 넓이만 따로 배열로 담아두었다가
필요 시 복구하는 방식으로 구현이 가능하겠습니다만...
셀 넓이만 복구 될 뿐, 그 이전 작업은 모두 사라지기 때문에 큰 의미가 없지 않을까 생각됩니다.^^;
답변이 도움이 되셨길 바랍니다.
화이팅입니다!(ง •̀_•́)ง
사랑의신
사랑의신 2020.07.16 14:14
네 고맙습니다. ^^ 근데 정말 편합니다. ㅎㅎㅎ
도미니코
도미니코 2020.10.22 16:57
Dim canundo As Boolean
Dim arrw(16384) As Long
Dim arrh(1048576) As Long

Sub 행열맞춤()
 
On Error Resume Next

Dim a As Integer
 
Dim rng As Range
Dim cGap As Long: cGap = 1  '<-- 좌우간격을 조절합니다.
Dim rGap As Long: rGap = 3  '<-- 상하간격을 조절합니다.
 
i = 0
For Each rng In Selection.Rows(1).Cells
  With rng
    arrw(i) = .EntireColumn.ColumnWidth
    i = i + 1
    End With
Next
    
i = 0
For Each rng In Selection.Rows(1).Cells
  With rng
    arrh(i) = .EntireRow.RowHeight
    i = i + 1
    End With
Next
    
Selection.EntireColumn.AutoFit
Selection.EntireRow.AutoFit
 
 
For Each rng In Selection.Rows(1).Cells
  With rng
    .EntireColumn.ColumnWidth = .EntireColumn.ColumnWidth + cGap
  End With
Next
 
For Each rng In Selection.Columns(1).Cells
  With rng
    .EntireRow.RowHeight = .EntireRow.RowHeight + rGap
  End With
Next

canundo = True

End Sub

Sub Undo_행열맞춤()

On Error Resume Next

Dim i As Integer

Dim rng As Range

If canundo = False Then
 MsgBox ("행열맞춤 실행 이력이 없습니다.")
 canundo = flase
 Exit Sub
End If

i = 0
For Each rng In Selection.Rows(1).Cells
  With rng
     .EntireColumn.ColumnWidth = arrw(i)
     i = i + 1
  End With
Next

i = 0
For Each rng In Selection.Columns(1).Cells
  With rng
    .EntireRow.RowHeight = arrh(i)
    i = i + 1
  End With
Next

canundo = flase

End Sub

만들어주신 행열맞춤 매크로에 UNDO매크로를 하나 더 만들어 단축키를 지정하여 사용하니 되돌아가기 기능이 되는데 같이 공유하고 싶습니다!!
오빠두엑셀
오빠두엑셀 작성자 2020.10.22 17:45
좋은 자료 공유해주셔서 대단히 감사드립니다!!
각 넓이를 배열로 받아서 저장할 생각을 하지 못했었네요~~^^ 기능이 필요하신 많은 분들께 정말 큰 도움이 될 듯 합니다
미니탱구
미니탱구 2022.07.05 14:53
혹시 되돌리기 매크로 실행할때 행은 이전으로 안돌아가지 않던가요? 저만 그런가요??
혹시 이 방법도 아시면 알려주세요~
오빠두엑셀
오빠두엑셀 작성자 2022.07.08 16:44
안녕하세요.
매크로는 실행 후 이전 단계로 되돌리기가 불가능합니다.
David
David 2020.07.16 01:43
좋은 강의 감사합니다.
그런데 저는 해당 매크로를 사용하면 매크로가 적용되는 동시에 엑셀이 멈추면서 마우스 커서가 로딩중일 때 나오는 동그라미가 나옵니다. 아무리 기다려도 그대로 화면이 그대로 정지가 돼서 클릭을 하면 응답없음으로 바뀌어 결국 엑셀을 끄게되고 매크로를 사용 못하게 되네요. 해결 방법이 없을까요?
오빠두엑셀
오빠두엑셀 작성자 2020.07.16 02:31
안녕하세요? ^^
아래 적어드린 순서대로 한 단계씩 디버깅 해보시겠어요?
- 명령문의 시작부분, "Selection.EntireColumn.AutoFit" 를 클릭합니다.
- 키보드 F9 키를 눌러 중단점을 설정하세요.
- 행렬맞춤 매크로를 실행합니다.
- 아까 설정한 중단점에서 매크로가 중지됩니다. 키보드 F8키를 눌러 한단계씩 실행합니다.

특정 지점에서 계속 반복되는 상황이 생길거라 예상되는데요.
디버깅 후 어느 지점에서 무한반복이 일어나는지 말씀해주시면 확인 후 답변드리겠습니다. :)
Danilo
Danilo 2024.03.29 01:48
안녕하세요. 좋은 강의 잘 듣고 있습니다. 저 역시 David 님과 동일한 문제가 있는 것 같습니다. 매크로가 실행이 되기는 하는데 상당히 시간이 오래 걸립니다.
위에 쓰신 것처럼 디버깅을 하니 아래 부분이 반복되고 있습니다.

  With rng
    .EntireColumn.ColumnWidth = .EntireColumn.ColumnWidth + cGap
  End With
Next

채크 부탁드립니다.
오빠두엑셀
오빠두엑셀 작성자 2024.03.31 02:45
안녕하세요.
그럴 경우 아래와 같이 명령문의 시작과 마지막 부분에 EnableEvents 를 각각 추가해서 수정해보시길 바랍니다.
그러면 문제가 바로 해결될겁니다. :)
남겨드린 답변이 문제를 해결하시는데 도움이 되었길 바랍니다. 감사합니다.
Sub 명령문()
Application.EnableEvents = False
' 기존명령문...
Application.EnableEvents = True
End Sub
Danilo
Danilo 2024.04.06 16:23
댓글 남겨주셔서 감사합니다. 그런데 제가 댓글을 기다리다가 그 매크로를 삭제해버려서 다시 그 에러가 나오지 않고 있어서 제시해주신 댓글처럼 시도해 볼 수가 없어서 안타깝습니다.
김경석
김경석 2020.07.16 09:55
좋은 기능 감사합니다. ^^
매번 행높이 맞추는게 그랬는데 ~~ 잘쓸게요 감사해요
맑은하늘
맑은하늘 2020.07.17 10:08
감사합니다.
필요하던 기능입니다.
csuga7
csuga7 2020.07.17 10:38
제가 실수로 매크로 기록 창이 나타나면 매크로 저장 위치를 '개인용 매크로 통합 문서'로 선택한 뒤, '확인'을 클릭합니다 이 부분을 현재통합문서로 설정 한 뒤에 뒤에 작업을 똑같이 했는데 다른 파일에서 아이콘은 있으나 행열맞춤이 되질 않습니다. ㅠㅠ 처음부터 다시 해봤는데도 동일해서 혹시 초기화 시키는 방법이나 해결방법 말씀해주시면 감사합니다 ㅠㅠ
오빠두엑셀
오빠두엑셀 작성자 2020.07.17 15:15
안녕하세요?^^
현재 파일의 모듈 삭제, 리본 사용자 지정 메뉴에서 기존의 '행열맞춤' 버튼 제거 하신 뒤,
처음부터 다시 시작해보세요.
lotus
lotus 2020.07.18 15:54
너무 친절한 설명 좋아요~
연
2020.07.21 12:09
ㅠㅠ 최고다 최고ㅠㅠ 지금까지 내가 한 뻘짓이 주마등처럼 스쳐지나갑니다
에이사 버터필드
에이사 버터필드 2020.08.06 11:50
꼭 필요한 기능이었어요 감사합니다.
굴레악
굴레악 2020.12.13 13:23
지금 보니깐 행/열 머리글 사이를 더블 클릭했을 때보다 간격이 조금 더 크게 조절되네요.
여유가 있어 보기에는 좋아 보이기도 하는데요. 때론 행/열 머리글 사이를 더블 클릭했을 때의 최소화된 간격이 아니라서 공간 사용이 많아지는 차이가 있네요.
블럭매니아
블럭매니아 2021.03.25 16:24
안녕하세요. 해당기능 정말 너무 잘 사용중입니다.ㅠㅠ
혹시 알려주신 매크로에 가운데 정렬, 가운데맞춤, 폰트를 맑은고딕 혹은 폰트 사이즈 변경을 추가하려면 어떻게 변경해야 할까요??ㅠ
또, 실행전 꼭 컨드롤 에이로 전체셀선택 후 해당 매크로를 실행해야하는데 파일 다운하고 해당 매크로 클릭한번으로 바로 전체 셀 실행되도록 할 순 없을까요?ㅠ
오빠두엑셀
오빠두엑셀 작성자 2021.03.29 16:28
명령문의
Selection 

ActiveSheet.UsedRange
로 변경하면 시트의 사용중인 범위 전체 대상으로 행/열 자동맞춤됩니다.
블럭매니아
블럭매니아 2021.03.30 18:56
아하!! 그럼 활성셀만 적용하려면 어떤 명령문을 사용해야 할까요??