엑셀 / VBA / 여러 시트의 내용을 하나의 시트에 모으는 방법

동일한 형식에 내용만 다른 여러 시트의 데이터를 하나로 합치는 방법을 알아본다.

예를 들어 다음과 같은 엑셀 문서가 있다고 하자. 첫 번째 시트는 합쳐진 데이터가 모일 시트이고, 나머지 세 개는 데이터가 있는 시트이다.

[개발 도구]의 [Visual Basic]을 클릭한다.(만약 개발 도구 메뉴가 없다면 여기의 안내대로 개발 도구를 추가한다.)

[삽입]의 [모듈]을 클릭한다.

다음과 같이 코드를 입력한다.

Sub Merge()

    Sheets(1).Activate '첫 번째 시트로 이동
    ActiveSheet.Range("A1").CurrentRegion.Select '값이 있는 셀 선택
    Selection.Delete '선택한 셀 삭제

    Sheets(2).Activate '두 번째 시트로 이동
    ActiveSheet.Range("A1").CurrentRegion.Select '값이 있는 셀 선택
    Selection.Copy Destination:=Sheets(1).Range("A1") '첫 번째 시트에 붙여넣기
    ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select '값이 있는 다음 행 첫 번째 셀 선택

    Dim I As Integer
    For I = 3 To 4
        Sheets(I).Activate 'I 번째 시트로 이동
        ActiveSheet.Range("A1").CurrentRegion.Select '값이 있는 셀 선택
        Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select '선택에서 1행 제외
        Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2) '첫 번째 시트에 붙여넣기
        ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select '값이 있는 다음 행 첫 번째 셀 선택
    Next
    
    Sheets(1).Activate '첫 번째 시트로 이동
    ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select '값이 있는 다음 행 첫 번째 셀 선택
    
End Sub

다음의 순서로 작업하는 코드이다.

  1. 첫 번째 시트를 선택하고 내용을 지운다.
  2. 두 번째 시트의 내용을 복사하여 첫 번째 시트에 붙여넣는다.
  3. 나머지 시트의 내용을 복사하여 첫 번째 시트에 붙여넣는다.

두 번째 시트에 대한 코드와 나머지 시트에 대한 코드가 다른 이유는 머리글 때문이다.

이제 [개발 도구]의 [매크로]를 클릭한다. 단축키는 Alt+F8이다.

Merge를 선택하고 [실행]을 클릭한다.

다음처럼 첫 번째 시트에 데이터가 다 모인다.

같은 카테고리의 다른 글
엑셀 / 함수 / SUBSTITUTE / 문자열 바꾸기

엑셀 / 함수 / SUBSTITUTE / 문자열 바꾸기

개요 SUBSTITUTE는 특정 문자열을 찾아서 다른 문자열로 바꾸는 함수입니다. 구문 SUBSTITUTE(text, old_text, new_text, ) text : 필수 요소로, 문자열을 바꿀 텍스트가 있는 셀의 참조 또는 텍스트입니다. old_text : 필수 요소로, 바꿀 텍스트입니다. new_text : 필수 요소로, old_text를 대신할 텍스트입니다. instance_num : 선택 요소로, 몇 번째에 있는 old_text를 new_text로 바꿀 것인지 정합니다. 예를 들어 1이면 첫번째 old_text만, 2이면 두번째 old_text만 바꿉니다. 정하지 않으면 모든 old_text를 바꿉니다. 예제 예제 ...

엑셀 / 화면 확대, 축소 하는 방법

엑셀 / 화면 확대, 축소 하는 방법

화면 확대/축소 엑셀의 기본 글자 크기는 보통 11pt입니다. 대부분 그 크기에 익숙해져있지만, 좀 더 크게 또는 좀 더 작게 보는 게 편할 때가 있습니다. 글자 크기를 변경하는 방법도 있지만, 다른 사람과 자료를 공유해야 하거나, 프린터로 인쇄해야 하는 경우에는, 글자 크기는 그대로 둔 채 화면만 확대/축소하는 게 좋습니다. 화면을 확대/축소하는 방법 두 가지를 소개해드립니다. 방법 ...

엑셀 / 행의 최대 개수, 열의 최대 개수, 셀의 최대 개수

엑셀 / 행의 최대 개수, 열의 최대 개수, 셀의 최대 개수

행, 열, 셀 엑셀은 표 형태로 되어 있어요. 가로를 행이라 하고, 세로를 열이라 하고, 각 칸을 셀이라 합니다. 행은 숫자로 구분하고, 열은 문자로 구분해요. 셀은 열과 행의 이름을 합하여 나타냅니다. 예를 들어 D3는 D열과 3행이 만나는 셀을 의미합니다. 사용할 수 있는 행과 열의 개수는 정해져있어요. 꽤 많긴 하지만 무한대로 있지는 않아요. 최대 몇 ...

엑셀 / 이메일 앞 부분 추출하는 방법

엑셀 / 이메일 앞 부분 추출하는 방법

예를 들어 B2 셀에 있는 abc@manualfactory.net에서 @ 앞 부분을 추출하고 싶다면 다음과 같이 합니다. =LEFT(B2,FIND("@",B2)-1)

엑셀 / 나누기, 몫 구하기, 나머지 구하기

엑셀 / 나누기, 몫 구하기, 나머지 구하기

나누기 나누기는 슬래시 기호로 해요. 예를 들어 6 나누기 2는 6/2 와 같이 하면 됩니다. 몫 구하기 나누었을 때의 몫만 구하고 싶다면 QUOTIENT 함수를 이용하면 돼요. QUOTIENT(numerator, denominator) numerator에는 피제수, denominator에는 제수를 넣습니다. 나머지 구하기 나누었을 때의 나머지만 구하고 싶다면 MOD 함수를 사용합니다. MOD(number, divisor) number에는 피제수, divisor에는 제수를 입력합니다. 예제 다음은 100을 8로 나누어보고, 몫을 구하고, 나머지를 구하는 예제입니다.

엑셀 / 여러 워크시트 한 화면에서 동시에 보기

엑셀 / 여러 워크시트 한 화면에서 동시에 보기

여러 워크시트 동시 작업 여러 워크시트에서 동시에 작업할 때가 있습니다. A 시트에서는 데이터를 관리하고, B 시트에서는 그 데이터를 분석하고... 작업을 하면서 여러 시트를 왔다갔다 하는 게 많이 불편합니다. 그럴 땐 한 화면에서 여러 시트를 한 번에 볼 수 있게 만들면 좋습니다. 시트간 이동도 편하고, 한 눈에 모든 걸 볼 수 있는 것도 ...

엑셀 / 주민등록번호 뒷자리 별표로 바꾸는 방법

엑셀 / 주민등록번호 뒷자리 별표로 바꾸는 방법

예를 들어 B2 셀에 있는 주민등록번호의 뒷자리를 별표로 바꾸고 싶다면 다음과 같이 합니다. =REPLACE(B2,8,7,"*******")

엑셀 / 참조 / 상대 참조, 절대 참조, 혼합 참조

엑셀 / 참조 / 상대 참조, 절대 참조, 혼합 참조

다른 셀의 값을 가져다 쓰는 걸 참조라고 한다. 참조의 대상이 되는 셀의 값이 바뀌면, 참조한 셀의 값도 바뀐다. 참조 방식은 상대 참조, 절대 참조, 혼합 참조 세 가지가 있다. 참조한 셀을 복사할 때의 결과가 가장 큰 차이이다. 상대 참조 예를 들어 셀 D3에서 셀 A1을 참조하면, 왼쪽으로 3칸, 위쪽의 2칸에 위치한 셀을 참조한다는 ...

엑셀 / 피벗 테이블 / 만드는 방법

엑셀 / 피벗 테이블 / 만드는 방법

자료 분석을 위해서 필터를 하거나 새롭게 수식을 만드는 것은 번거로운 일입니다. 피벗 테이블을 이용하면 다양한 형식의 분석 결과를 쉽게 만들 수 있습니다. 피벗 테이블을 만드는 방법은... 방법 1 분석하려는 자료를 선택한 다음, 을 클릭합니다. 만약 자료가 표라면 자동으로 표가 선택됩니다. 을 클릭하면... 새 워크시트에 피벗 테이블이 만들어집니다. 자료가 표가 아닌 경우 셀들을 선택해서 ...

엑셀 / 함수 / UPPER, LOWER, PROPER / 대문자로 또는 소문자로 변환하는 함수

엑셀 / 함수 / UPPER, LOWER, PROPER / 대문자로 또는 소문자로 변환하는 함수

개요 UPPER, LOWER, PROPER는 대문자 또는 소문자 변환과 관련된 함수입니다. UPPER : 모두 대문자(upper case)로 바꿉니다. LOWER : 모두 소문자(lower case)로 바꿉니다. PROPER : 단어의 첫글자는 대문자로, 나머지는 소문자로 바꿉니다. 구문 UPPER(text) LOWER(text) PROPER(text) text : 필수 요소로, 대문자로 또는 소문자로 변환할 텍스트입니다. PROPER 함수 단어의 첫째 문자를 대문자로 변환하고, 나머지 문자들은 소문자로 변환합니다. 예를 들어 PROPER("abCdE") 는 Abcde입니다. 단어의 첫째 문자가 영문자가 아닌 경우, 영문자가 아닌 문자 다음에 오는 영문자를 대문자로 ...