Excel 행과 열 바꾸는 방법
excel vba
개요
엑셀에 다음과 같은 내용이 있다고 하자.
| no | name | tel |
| 1 | Lee | 010-1234-xxxx |
| 2 | Kim | 010-4321-yyyy |
| 3 | Park | 010-1357-qqqq |
이 표의 행과 열을 바꿔 다음과 같이 만들고자 한다.
| no | 1 | 2 | 3 |
| name | Lee | Kim | Park |
| tel | 010-1234-xxxx | 010-4321-yyyy | 010-1357-qqqq |
다음과 같은 방법들이 있다.
- 복사 - 붙여넣기의
행/열 바꿈옵션을 사용하기 transpos함수 사용- VBA 사용
붙여넣기

- 영역을 지정한다.
ctrl+c로 복사한다.- MacOS라면
command+c.
- MacOS라면
- 붙여넣고 싶은 곳을 클릭해 커서를 위치시킨다.
- 그냥 붙여넣지 않고 위의 이미지와 같이
홈-붙여넣기-행/열 바꿈을 선택하면 완료.- 영문판에서는
행/열 바꿈이Transpose.
- 영문판에서는
transpos 함수
- 붙여넣을 범위를 마우스로 드래그하거나 키보드로 지정한다.
- 위쪽 수식 입력칸에
=transpos(범위)를 적는다.- 예를 들어 원본 표의 범위가
B5:D8이라면=transpos(B5:D8)을 적는다. ctrl+shift+Enter를 입력하면 처음에 지정한 범위 안에 표가 행/열이 바뀌어 들어간다.- MacOS에서도 똑같이
ctrl+shift+Enter하면 된다.
- MacOS에서도 똑같이
- 그냥
Enter치면 안 된다.
- 예를 들어 원본 표의 범위가
VBA 프로시저 만들어 사용하기
VBA 코딩으로 해결하고 싶다면 다음과 같이 하면 된다.
- VBA를 사용 셋팅이 안 되어 있다면 [[excel-vba-setting]] 참고.
alt+F11로 VBA 에디터를 실행한다.- 다음 프로시저를 복사해 모듈에 붙여넣는다.
Sub ChangeColRow()
Dim originRange As Range
Dim targetRange As Range
Set originRange = Application.InputBox(Prompt:="question1", Title:="복사할 대상 선택", Type:=8)
Set targetRange = Application.InputBox(Prompt:="question2", Title:="붙여넣을 기준 셀 하나 선택", Type:=8)
' 선택한 범위 복사
originRange.Copy
' 붙여넣을 곳 선택하고, Transpose 옵션으로 붙여넣기
targetRange.Select
Selection.PasteSpecial _
Paste:=xlPasteAll, _
Operation:=xlPasteSpecialOperationNone, _
SkipBlanks:=False, _
Transpose:=True ' 이 옵션이 중요
End Sub
- 워크시트에서
개발 도구-매크로를 선택한 다음,매크로 이름에서ChangeColRow를 실행한다. - "복사할 대상 선택"을 물어보면 복사할 대상을 마우스로 드래그해서 선택한다.
- "붙여넣을 기준 셀 하나 선택"을 물어보면 붙여넣을 곳 하나를 고른다.
- 끝.