목차
엑셀을 업무에서 활용하려고 하다 보면 데이터를 합치고 나누는 것에 시간을 많이 사용하게 됩니다. 우리가 볼 때는 기본적인 기능인 것 같지만 엑셀에서 모든 기능을 세세히 제공할 수도 없을뿐더러 엑셀에 컨셉에도 맞지 않습니다. 하지만 VBA를 조금만 알아도 단순 반복 업무에서 벗어날 수 있습니다.
인터넷에서 찾은 그럴듯한 VBA는 내 문서와 맞지 않을 수 있습니다. 이런 경우 VBA를 알고 있다면 변형해서 사용할 수 있습니다. 그래서 오늘은 아주 간단한 예제를 통해 VBA가 어떤 느낌인지 소개하려고 합니다.
1. VBA 실행하기
1. [파일] 탭을 클릭합니다.
2. [옵션]을 클릭합니다.
3. [리본 사용자 지정]을 클릭합니다.
4. [개발 도구]를 클릭합니다.
5. [확인]을 클릭합니다.
6. [개발 도구]를 클릭합니다.
7. [Visual Basic]을 클릭합니다.
8. 작업을 하고 싶은 엑셀 파일과 시트를 더블클릭합니다.
오른쪽에 메모장같은 창이 뜬다면 준비가 끝난 것입니다.
2. 여러 줄(열)로 된 데이터 한 줄(열)로 합치기
B, C, D에 나뉘어 있는 데이터를 A열에 모아보도록 하겠습니다.
Sub merge()
'-- 워크시트와 문자열 변수를 선언합니다. --`
Dim sh1 As Worksheet
Dim text As String
'-- 워크북의 Sheet1을 sh1로 참조합니다. --`
Set sh1 = ThisWorkbook.Sheets("Sheet2")
'-- 반복문 범위의 변수를 초기화합니다. 합치고자 하는 열의 row수가 endCur이 됩니다. --`
startCur = 1
endCur = 10
cntRow = 1
'-- 열 2와 10을 반복하는 외부 반복문입니다. 열이 많다면 더 늘어나야 합니다.--`
For i = 2 To 10
'-- 범위 내의 데이터를 합치는 내부 반복문입니다. --`
For j = startCur To endCur
'-- 현재 열의 데이터를 대상 열로 복사합니다. --`
sh1.Cells(cntRow, 1) = sh1.Cells(j, i)
cntRow = cntRow + 1
Next j
Next i
End Sub
대략적인 코드 내용은 주석으로 달아 놨으니 수정하실 부분이 있다면 수정하여 사용하시면 되고 이해가 안 되는 부분이나 오류는 댓글 달아주시면 확인해 보겠습니다.
3. 한 줄(열)로 된 데이터 일정 간격으로 나누기
[2. 여러 줄(열)로 된 데이터 한 줄(열)로 합치기]와는 반대로 하나의 열에 있는 내용을 여러개의 열로 나누는 작업을 하는 VBA코드입니다.
Sub div()
'-- 워크시트와 문자열 변수를 선언합니다. --`
Dim sh1 As Worksheet
Dim text As String
'-- 워크북의 Sheet1을 sh1로 참조합니다. --`
Set sh1 = ThisWorkbook.Sheets("Sheet1")
'-- 반복문 범위의 변수를 초기화합니다. 나누고자 하는 열의 row수가 endCur입니다.--`
startCur = 1
endCur = 10
'-- 열 2와 10을 반복하는 외부 반복문입니다. --`
For i = 2 To 10
'-- 행 위치를 위한 카운터를 초기화합니다. --`
cnt = 0
'-- 범위 내의 데이터를 복사하는 내부 반복문입니다. --`
For j = startCur To endCur
'-- 행 카운터를 증가시킵니다. --`
cnt = cnt + 1
'-- 열 1의 데이터를 대상 열로 복사합니다. --`
sh1.Cells(cnt, i) = sh1.Cells(j, 1)
Next j
'-- 다음 반복을 위한 반복문 범위를 업데이트합니다. --`
startCur = startCur + 10
endCur = endCur + 10
Next i
End Sub
코드의 오류나 문의는 댓글로 달아주시기 바랍니다.
'업무 프로그램 > MS 엑셀' 카테고리의 다른 글
엑셀 제비뽑기(랜덤 추첨) 쉽게 하기 (0) | 2024.01.24 |
---|---|
엑셀 붙여 넣기 옵션 알아보기(너비와 서식까지 복사하기) (0) | 2024.01.22 |
엑셀 띄어쓰기 무시하고 텍스트 찾기(검색)하기, 필터 검색 여러 개 하기 (0) | 2024.01.16 |
엑셀에서 특정한 값(텍스트)을 가지고 있는 행 한 번에 삭제하기 (0) | 2024.01.15 |
엑셀에서 합계가 맞지 않는 경우(계산 함수, 수식 오류) (0) | 2024.01.11 |