다음은 아래와 같이 코딩된 복수응답 설문 결과를 엑셀에서 빈도표를 만드는 과정이다.
(나는 누가 이렇게 코딩한 것을 넘겨받아 처리하게 되었는데 바람직한 것은 처음부터 [참조사이트]와 같이 코딩하면 편할 것이다.)
이것을 수동으로 한다면 텍스트 나누기(Text to Columns)를 해서 응답을 나누고 그걸 아래로 1열로 쭉 잘라붙인다음 피벗 데이블에서 빈도표를 출력하는 방법이 있다. 그런데 응답 보기 숫자가 많아질수록 이게 한문항 처리하는 데도 상당한 노가다를 필요로 한다.
그래서 일단 텍스트 나누기까지는 수동으로 (데이터 -> 텍스트 나누기 기능)으로 하고 그결과를 1열로 처리하는 과정을 VBA 매크로를 이용해서 빠르게 처리하는 방법을 소개한다.
- 엑셀에서 VBA 편집기 열기:
- Alt + F11을 눌러 VBA 편집기를 엽니다.
- 새 모듈 추가:
- 삽입 > 모듈을 클릭하여 새 모듈을 추가합니다.
- VBA 코드 입력:
- 아래의 VBA 코드를 새 모듈에 붙여 넣습니다.
Sub TransformToColumn()
Dim ws As Worksheet
Dim sourceRange As Range
Dim destCell As Range
Dim cell As Range
Dim currentRow As Long
Dim currentColumn As Long
' 현재 활성화된 시트를 ws 변수에 설정
Set ws = ActiveSheet
' 원본 데이터 범위를 사용자에게 입력받아 sourceRange 변수에 설정
On Error Resume Next
Set sourceRange = Application.InputBox("원본 데이터 범위를 선택하세요:", Type:=8)
On Error GoTo 0
' 유효한 범위가 선택되지 않은 경우 메시지 표시 후 종료
If sourceRange Is Nothing Then
MsgBox "유효한 범위가 선택되지 않았습니다. 매크로를 종료합니다."
Exit Sub
End If
' 출력 위치를 사용자에게 입력받아 destCell 변수에 설정
On Error Resume Next
Set destCell = Application.InputBox("결과를 출력할 셀을 선택하세요:", Type:=8)
On Error GoTo 0
' 유효한 셀이 선택되지 않은 경우 메시지 표시 후 종료
If destCell Is Nothing Then
MsgBox "유효한 셀이 선택되지 않았습니다. 매크로를 종료합니다."
Exit Sub
End If
' 결과 출력 위치 초기화 (기존 데이터 삭제)
destCell.CurrentRegion.Clear
' 원본 데이터 범위에서 데이터를 읽고 결과를 세로로 출력
For currentRow = 1 To sourceRange.Rows.Count ' 원본 데이터의 각 행을 순회
For currentColumn = 1 To sourceRange.Columns.Count ' 각 행의 각 열을 순회
If Not IsEmpty(sourceRange.Cells(currentRow, currentColumn)) Then ' 셀이 비어 있지 않은 경우
destCell.Value = sourceRange.Cells(currentRow, currentColumn).Value ' 셀 값을 결과 셀에 설정
Set destCell = destCell.Offset(1, 0) ' 결과 셀을 다음 행으로 이동
End If
Next currentColumn
Next currentRow
' 작업 완료 메시지 표시
MsgBox "데이터 변환 완료!"
End Sub
별도의 저장 과정 없이 VBA창은 그냥 닫으면 됩니다. 그리고,
매크로 실행:
- Alt + F8을 눌러 매크로 대화 상자를 엽니다.
- TransformToColumn를 선택하고 실행을 클릭합니다.
실행하면 원하는 범위와 목적지 셀을 묻는 창이 뜹니다.
그러면 아래 그림에서 위와 같은 데이터가 아래와 같이 변환됩니다.
끝.
'엑셀 Excel' 카테고리의 다른 글
엑셀파일을 pdf로 만드는 방법 (0) | 2024.04.25 |
---|---|
엑셀 텍스트로 되어 있는 날짜 형식 변환 방법 두가지 (0) | 2023.08.29 |
[엑셀] xlookup 2개 이상 조건 걸어 찾기 (0) | 2022.11.29 |
엑셀 행 열 변환 / 가로 세로 전환 (ex. 가로로 있는 연도를 세로로 넣기) - 파워 쿼리 이용 (피벗 테이블 기초작업) (2) | 2020.03.02 |
엑셀 if로 빈칸에 따른 조건 걸기 (0) | 2019.12.03 |
댓글