[257회 라이브 공지] 이번 주 라이브는 `3/4(수) 오후 8시` 에 진행합니다! 오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴

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

간단한 매크로와 리본 버튼을 활용하여 버튼 클릭 1번으로 선택한 범위의 셀 크기를 자동맞춤하는 방법을 알아봅니다.

# 함수및공식 # VBA

작성자 :
오빠두엑셀
최종 수정일 : 2022. 10. 10. 21:05
URL 복사
메모 남기기 : (36)

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

엑셀 행 높이 자동 맞춤 목차 바로가기
영상 강의


예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [실무기초] 14강 행열 자동 맞춤 원클릭 버튼 만들기
    예제파일

엑셀 행 높이 / 열 넓이 자동맞춤 기본방법 3가지

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

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

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

    마우스 커서 이동
    마우스커서를 선택한 범위의 가장자리로 이동하면 마우스 커서가 변경됩니다.
  3. 마우스 커서를 드래그하면 행 높이/열 넓이를 조절할 수 있습니다.

    열 넓이 직접 조절
    마우스를 클릭한 뒤 드래그하면 행 높이/열 넓이가 변경됩니다.
여러 개의 행 높이/열 넓이를 한번에 동일하게 변경하기
  1. 변경하고자하는 여러 개의 행 또는 열을 선택합니다. (키보드 Ctrl 키를 누른채로 선택하면 떨어진 곳에 있는 행/열을 선택할 수 있습니다.)

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

    모든 열 넓이 동일하게 변경
    마우스 커서를 선택한 범위 머릿글 가장자리로 이동한 뒤 드래그 하면 모든 범위가 한번에 변경됩니다.
여러 개의 행 높이/열 넓이를 셀에 입력된 값에 맞춰 자동으로 변경하기
  1. 변경하고자하는 여러 개의 행 또는 열을 선택합니다.

    여러 행 열 선택
    행 높이 / 열 넓이를 변경할 전체 범위를 선택합니다.
  2. 마우스 커서를 선택된 행/열의 가장자리로 이동한 뒤, 마우스 커서가 좌우 화살표로 변경되면 마우스 왼쪽 버튼을 더블클릭합니다.

    마우스 커서 더블클릭
    마우스 커서를 머릿글 가장자리로 이동한 뒤 더블클릭합니다.
  3. 선택된 행 높이/열 넓이가 셀이 입력된 값에 따라 자동으로 조절됩니다.

    엑셀 행 높이 자동 맞춤 gif
    행 높이와 열 넓이가 셀에 입력된 값에 맞춰 자동으로 정렬됩니다.

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

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

이번 강의에서는 사용중인 엑셀 버전에 상관없이 버튼 클릭 한번으로 여러분이 원하는 여백을 주어 행 높이를 자동 맞춤하는 방법을 알아보겠습니다.

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

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

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

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

    행 높이 자동 맞춤 매크로 편집기
    매크로 편집기로 이동합니다.
  5. 프로젝트 창에서 PERSONAL.XLSB  - 모듈 - Module1 을 더블클릭합니다.

    행 높이 자동 맞춤 모듈 이동
    프로젝트 창에서 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
    행열맞춤 버튼을 클릭하면 선택한 범위의 행/열이 자동으로 정렬됩니다.

자주 묻는 질문

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

행렬맞춤 명령문의 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
자주묻는질문2. PERSONLA.XLSB 통합문서 사용을 중단하고 싶습니다. 어떻게 삭제하나요?

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

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

    엑셀 옵션 보안센터 이동
    옵션 - 보안센터 - 보안센터 설정으로 이동합니다.
  2. 신뢰할 수 있는 위치 - Excel 기본위치 : 사용자시작 - '수정' 버튼을 클릭합니다.

    신뢰할 수 있는 위치
    신뢰할 수 있는 위치 - 사용자 시작을 선택한 뒤, 수정 버튼을 클릭합니다.
  3. 경로를 복사한 뒤, 엑셀을 종료합니다. (엑셀이 반드시 종료되어 있어야만 PERSONAL 통합문서를 삭제할 수 있습니다)

    경로 복사
    해당 경로를 복사한 뒤 엑셀을 종료합니다.
  4. 윈도우키 + E 로 파일탐색기를 실행합니다. 복사한 경로를 탐색기에 붙여넣기 합니다. PERSONAL 통합문서를 삭제합니다.

    PERSONAL 통합문서 삭제
    경로에 있는 PERSONLA 통합문서를 삭제합니다.
댓글 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
아하!! 그럼 활성셀만 적용하려면 어떤 명령문을 사용해야 할까요??