엑셀 / 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를 선택하고 [실행]을 클릭한다.

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

같은 카테고리의 다른 글
엑셀 / 피벗 테이블 / 보고서 레이아웃

엑셀 / 피벗 테이블 / 보고서 레이아웃

피벗 테이블을 만들었을 때, 데이터 표시 방법이 마음에 들지 않을 수 있습니다. 접고 펴기가 가능한 그룹화된 모양인데, 경우에 따라서 일반적인 표 모양의 결과물이 필요할 수도 있죠. 만약 표시 형식을 바꾸고 싶다면 피벗 테이블의 레이아웃을 변경하면 됩니다. 아래와 같은 표로 여러 가지 레이아웃의 피벗 테이블을 만들어보겠습니다. 워크시트를 하나 추가하고, 을 클릭합니다. [외부 ...

엑셀 / 함수 / VAR.P, VAR.S, VARP, VAR / 분산과 표본분산 구하는 함수

엑셀 / 함수 / VAR.P, VAR.S, VARP, VAR / 분산과 표본분산 구하는 함수

개요 VAR.P는 분산을 구하는 함수입니다. 엑셀 2007 이전 버전이라면 VARP 함수를 사용합니다. VAR.S는 표본분산을 구하는 함수입니다. 엑셀 2007 이전 버전이라면 VAR 함수를 사용합니다. 구문 분산을 구하는 구문은 다음과 같습니다. VAR.P(number1,,...) 표본분산을 구하는 구문은 다음과 같습니다. VAR.S(number1,,...) 예제 다음은 같은 자료로 분산과 표본분산을 구하는 예제입니다. 표본분산이 좀 더 크게 나와야 정상입니다.

엑셀 / VBA / 모듈 내보내기 가져오기

엑셀 / VBA / 모듈 내보내기 가져오기

엑셀에서 VBA로 만든 모듈을 다른 파일에서 사용하는 방법은, 그 모듈을 내보내고 다른 파일에서 가져오는 것입니다. 작업은 Visual Basic Editor에서 합니다. 모듈 내보내기 내보내기를 할 엑셀 파일을 열고 Visual Basic Editor를 엽니다. 단축키는 Alt+F11입니다. 내보낼 모듈을 선택하고 마우스 우클릭합니다. 팝업 메뉴에서 를 클릭하면 확장자가 bas인 파일로 저장됩니다. bas 파일은 텍스트 파일로, 메모장 등 텍스트 에디터로 ...

엑셀 / 와일드카드(*, ?, ~) 사용하는 방법

엑셀 / 와일드카드(*, ?, ~) 사용하는 방법

엑셀에서 검색을 하면 검색어를 포함한 셀을 찾습니다. 예를 들어 AB로 검색을 하면 AB가 제일 앞에 있든, 중간에 있는, 마지막에 있는 다 찾습니다. 만약 AB로 시작하는 셀을 찾고 싶을 때, A로 시작해서 B로 끝나는 셀을 찾고 싶을 때, AB로 끝나는 셀을 찾고 싶을 때는 어떻게 할까요? 그럴 때 사용하는 것이 와일드카드입니다. 와일드카드는 *과 ...

엑셀 / 함수 / REPLACE, REPLACEB / 특정 위치의 문자열을 바꾸는 함수

엑셀 / 함수 / REPLACE, REPLACEB / 특정 위치의 문자열을 바꾸는 함수

개요 REPLACE와 REPLACEB는 특정 위치의 문자열을 다른 문자열로 바꾸는 함수입니다.  특정 위치를 찾을 때 REPLACE 함수는 글자 수를 기준으로 하고, REPLACEB 함수는 바이트를 기준으로 합니다. 따라서 한 글자를 2바이트로 계산하는 한국어, 일본어, 중국어에서 차이가 납니다. 구문 REPLACE REPLACE(old_text, start_num, num_chars, new_text) old_text : 필수 요소로, 문자를 바꿀 문자열입니다. start_num : 필수 요소로, old_text에서 new_text로 바꿀 문자의 위치입니다. num_chars : 필수 요소로, old_text에서 사라질 문자의 ...

엑셀 / 셀 병합하기, 셀 분할하기

엑셀 / 셀 병합하기, 셀 분할하기

보기 좋게 표를 만들거나 보고서를 만들려면 셀들을 합쳐야 할 때가 있습니다. 엑셀에서는 셀을 합치는 것을 병합이라고 하고, 다시 나누는 것을 분할이라고 합니다. 어떻게 병합하고 분할하는지, 병합에는 어떤 방법이 있는지 알아보겠습니다. 병합하고 가운데 맞춤 셀을 합치는 가장 간단한 방법은 합치려는 셀들을 선택하고 을 클릭하는 것입니다. 셀들이 하나도 합쳐지고, 텍스트는 가운데 정렬합니다. 셀 병합을 하면 ...

엑셀 / 한영 자동 전환 해제하는 방법

엑셀 / 한영 자동 전환 해제하는 방법

엑셀에서 Rkakrnl를 입력하면 까마귀로 바뀝니다. 한글로 입력해야 할 것을 실수로 영어로 입력했을 거라 판단하여 한글로 변경해주는 기능입니다. 만약 이 기능이 불편하다면 옵션에서 비활성화할 수 있습니다.

엑셀 / 함수 / MEDIAN / 중앙값(중간값) 구하는 함수

엑셀 / 함수 / MEDIAN / 중앙값(중간값) 구하는 함수

개요 MEDIAN 함수는 수의 집합에서 수를 크기순으로 나열했을 때 정가운데에 있는 수를 구하는 함수입니다. 그 수를 중앙값 또는 중간값이라 합니다. 구문 MEDIAN(number1, , ...) number1은 필수 요소이고, 이후의 number는 선택 요소입니다. 1개에서 255개까지 사용할 수 있습니다. 수의 개수가 홀수일 때는 크기순으로 나열했을 때 정가운데의 수를 반환합니다. 예를 들어 MEDIAN(3,4,5,6,6) 은 5입니다. 수의 개수가 짝수일 때는 크기순으로 나열했을 때 가운데에 있는 ...

엑셀 / 함수 / LEN, LENB / 문자열의 문자 수, 바이트 수 구하는 함수

엑셀 / 함수 / LEN, LENB / 문자열의 문자 수, 바이트 수 구하는 함수

개요 LEN은 문자열의 문자 수를, LENB는 문자열의 바이트 수를 구하는 함수입니다. 구문 LEN(text) LENB(text) text : 필수 요소로, 길이를 구하려는 문자열입니다. 공백은 1개의 문자, 1바이트의 문자로 계산합니다. 한국어, 일본어, 중국어는 한 문자를 2바이트로 계산합니다. 예를 들어 LEN("가")는 1, LENB("가")는 2입니다. 예제 예제 1 ABCDE는 모두 1바이트 문자이므로, LEN과 LENB 모두 5를 반환합니다. 예제 2 공백은 1개의 문자, 1바이트 문자로 계산합니다. 예제 3 한국어, 일본어, 중국어는 1개의 문자를 ...

엑셀 / 달력 만드는 방법

엑셀 / 달력 만드는 방법

연말이 되면 여기저기서 달력을 받습니다. 고전적인 것도 있고 예쁜 것도 있습니다. 하지만 100% 마음에 드는 것은 없습니다. 그래서 엑셀로 나만의 달력을 만들었습니다. 달력을 만들 때 가장 귀찮은 것은 날짜를 채우는 것입니다. 날짜만 입력하면 나머지는 모양을 꾸미는 것이므로 어렵지 않습니다. 그렇다면 어떻게 날짜를 채울까요? 가로로 요일을 씁니다. 일요일 밑에 날짜를 입력합니다. 가로 방향으로 드래그하여 날짜를 ...