엑셀 행 높이 자동 맞춤, 클릭 1번으로 해결하는 방법!
엑셀 행 높이 자동 맞춤 목차 바로가기
영상 강의
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [실무기초] 14강 행열 자동 맞춤 원클릭 버튼 만들기예제파일
엑셀의 행렬 크기를 셀에 입력된 값에 맞춰 자동으로 정렬하는데에는 크게 3가지 방법이 있습니다.
행 높이/열 넓이를 드래그하여 직접 조절하기
- 시트 화면의 머릿글(알파벳 또는 숫자)를 선택하여 변경하고자 하는 전체 행 또는 열을 선택합니다.

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

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

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

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

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

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

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

행 높이와 열 넓이가 셀에 입력된 값에 맞춰 자동으로 정렬됩니다.
원클릭 행 높이 자동 맞춤 버튼 만들기
Microsoft 365 이전 버전을 사용할 경우, 행/열 넓이 자동 맞춤 시 셀 주변에 여백이 들어가지 않아 셀 간격이 매우 좁게 정렬 된다는 문제가 있었습니다. Microsoft 365 버전 (20년 7월 기준) 에서는 이 부분이 개선되어, 행렬 크기 자동맞춤 시 셀 주변에 여백이 들어가도록 변경 되었는데요.
이번 강의에서는 사용중인 엑셀 버전에 상관없이 버튼 클릭 한번으로 여러분이 원하는 여백을 주어 행 높이를 자동 맞춤하는 방법을 알아보겠습니다.
- 엑셀 화면 상단의 개발도구 - 매크로기록 또는 화면 좌측하단의 매크로녹화 버튼을 클릭합니다. 만약 화면에 개발도구 탭이 안 보이실경우, 아래 개발도구 활성화방법 관련 링크를 참고하세요.

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

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

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

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

프로젝트 창에서 PERSONAL.XLSB - 모듈 - Module1 을 더블클릭합니다. - 기존에 녹화된 매크로를 지운 뒤, 아래 명령문을 복사하여 모듈 안에 붙여넣기 합니다.
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
- 엑셀 화면으로 돌아온 뒤, 파일 - 옵션 - 리본사용자지정 - 홈의 [+] 버튼을 클릭합니다.

리본 사용자 지정 - 홈 - 맞춤을 선택합니다. - 맞춤을 선택한 뒤 '새 그룹'을 추가합니다. '이름 바꾸기'를 클릭하여 그룹의 이름을 '행열맞춤'으로 변경합니다.

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

명령선택 - 매크로로 이동한 뒤, '행열맞춤' 매크로를 새 그룹에 추가합니다. - 추가된 매크로를 선택한 뒤, '이름 바꾸기' 버튼을 클릭하여 원하는 이름과 아이콘으로 변경합니다.

매크로의 이름을 '행열맞춤'으로 변경하고 원하는 아이콘을 선택합니다. - '확인'을 눌러 옵션 창을 종료하면, 홈 탭에 '행열맞춤' 버튼이 추가되었습니다.

리본버튼에 새로운 기능이 추가되었습니다. - 이제 원하는 범위를 선택 후 해당 버튼을 클릭하면 선택된 범위의 행 높이가 자동 맞춤 됩니다.

행열맞춤 버튼을 클릭하면 선택한 범위의 행/열이 자동으로 정렬됩니다.
자주 묻는 질문
자주묻는질문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 통합문서를 삭제할 수 있습니다.
- 파일 - 옵션 - 보안센터 - 보안센터 설정으로 이동합니다.

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

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

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

경로에 있는 PERSONLA 통합문서를 삭제합니다.
- 시트 화면의 머릿글(알파벳 또는 숫자)를 선택하여 변경하고자 하는 전체 행 또는 열을 선택합니다.

아쉽게도 해당 동작은 '뒤로가기'를 할 수 없습니다.ㅜ-ㅜ;
하지만, 만약 '셀 넓이'만 복구하는 작업이 필요하시다면, 기존의 셀 넓이만 따로 배열로 담아두었다가
필요 시 복구하는 방식으로 구현이 가능하겠습니다만...
셀 넓이만 복구 될 뿐, 그 이전 작업은 모두 사라지기 때문에 큰 의미가 없지 않을까 생각됩니다.^^;
답변이 도움이 되셨길 바랍니다.
화이팅입니다!(ง •̀_•́)ง
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매크로를 하나 더 만들어 단축키를 지정하여 사용하니 되돌아가기 기능이 되는데 같이 공유하고 싶습니다!!
각 넓이를 배열로 받아서 저장할 생각을 하지 못했었네요~~^^ 기능이 필요하신 많은 분들께 정말 큰 도움이 될 듯 합니다
혹시 이 방법도 아시면 알려주세요~
매크로는 실행 후 이전 단계로 되돌리기가 불가능합니다.
그런데 저는 해당 매크로를 사용하면 매크로가 적용되는 동시에 엑셀이 멈추면서 마우스 커서가 로딩중일 때 나오는 동그라미가 나옵니다. 아무리 기다려도 그대로 화면이 그대로 정지가 돼서 클릭을 하면 응답없음으로 바뀌어 결국 엑셀을 끄게되고 매크로를 사용 못하게 되네요. 해결 방법이 없을까요?
아래 적어드린 순서대로 한 단계씩 디버깅 해보시겠어요?
- 명령문의 시작부분, "Selection.EntireColumn.AutoFit" 를 클릭합니다.
- 키보드 F9 키를 눌러 중단점을 설정하세요.
- 행렬맞춤 매크로를 실행합니다.
- 아까 설정한 중단점에서 매크로가 중지됩니다. 키보드 F8키를 눌러 한단계씩 실행합니다.
특정 지점에서 계속 반복되는 상황이 생길거라 예상되는데요.
디버깅 후 어느 지점에서 무한반복이 일어나는지 말씀해주시면 확인 후 답변드리겠습니다. :)
위에 쓰신 것처럼 디버깅을 하니 아래 부분이 반복되고 있습니다.
With rng
.EntireColumn.ColumnWidth = .EntireColumn.ColumnWidth + cGap
End With
Next
채크 부탁드립니다.
그럴 경우 아래와 같이 명령문의 시작과 마지막 부분에 EnableEvents 를 각각 추가해서 수정해보시길 바랍니다.
그러면 문제가 바로 해결될겁니다. :)
남겨드린 답변이 문제를 해결하시는데 도움이 되었길 바랍니다. 감사합니다.
매번 행높이 맞추는게 그랬는데 ~~ 잘쓸게요 감사해요
필요하던 기능입니다.
현재 파일의 모듈 삭제, 리본 사용자 지정 메뉴에서 기존의 '행열맞춤' 버튼 제거 하신 뒤,
처음부터 다시 시작해보세요.
여유가 있어 보기에는 좋아 보이기도 하는데요. 때론 행/열 머리글 사이를 더블 클릭했을 때의 최소화된 간격이 아니라서 공간 사용이 많아지는 차이가 있네요.
혹시 알려주신 매크로에 가운데 정렬, 가운데맞춤, 폰트를 맑은고딕 혹은 폰트 사이즈 변경을 추가하려면 어떻게 변경해야 할까요??ㅠ
또, 실행전 꼭 컨드롤 에이로 전체셀선택 후 해당 매크로를 실행해야하는데 파일 다운하고 해당 매크로 클릭한번으로 바로 전체 셀 실행되도록 할 순 없을까요?ㅠ
을
로 변경하면 시트의 사용중인 범위 전체 대상으로 행/열 자동맞춤됩니다.