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

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

같은 카테고리의 다른 글
엑셀 / 리본 메뉴 숨기기, 탭만 표시하기

엑셀 / 리본 메뉴 숨기기, 탭만 표시하기

탭과 리본 메뉴 엑셀을 실행시키면 상단에 여러 메뉴들이 있습니다. 제일 위에 있는 파일, 홈, 삽입 등을 탭이라 하고, 탭 밑에 있는 것을 리본 메뉴라고 합니다. 아래 스크린샷에서 빨간 박스 부분이 리본 메뉴입니다. 리본 메뉴가 상당히 두꺼워서 노트북 같이 화면이 작은 기기에서 작업할 때 불편할 수 있습니다. 그럴 땐 필요할 때만 리본 메뉴가 ...

엑셀 / 함수 / NPV / 순현재가치 계산하는 함수

엑셀 / 함수 / NPV / 순현재가치 계산하는 함수

개요 NPV 함수는 주기적인 현금흐름에 대한 순현재가치(NPV : Net Present Value)를 계산하는 함수입니다. 현금흐름은 정기적이어야 하지만, 금액은 일정할 필요가 없습니다. 구문 NPV(rate,value1,,...) rate 필수 요소로 할인율입니다. value1, value2, ... value1은 필수 요소이고, value2 부터는 선택 요소입니다. 각 시점의 현금흐름으로, 1개에서 254개까지 지정할 수 있습니다. 현금유입은 양수로, 현금유출은 음수로 입력합니다. value1은 1기간 말의 현금흐름, value2는 2기간 말의 현금흐름, value3은 3기간 말의 현금흐름입니다. ...

엑셀 / 함수 / RANK, RANK.EQ, RANK.AVG / 순위 구하는 함수

엑셀 / 함수 / RANK, RANK.EQ, RANK.AVG / 순위 구하는 함수

개요 RANK, RANK.EQ, RANK.AVG는 순위를 구하는 함수이다. RANK는 EXCEL 2007 이전 버전을 위한 함수이고, RANK.EQ와 RANK.AVG는 최신 버전을 위한 함수이다. RANK.EQ와 RANK.AVG는 같은 순위를 어떻게 처리하는지가 다르다. 구문 RANK(number,ref,) RANK.EQ(number,ref,) RANK.AVG(number,ref,) number : 필수 요소로, 순위를 구하려는 수 ref : 필수 요소로, 순위의 기준이 되는 수의 집합. 수 이외의 값은 무시된다. order : 선택 요소로, 입력하지 않거나 0으로 정하면 큰 수가 ...

엑셀 / 피벗 테이블 / 여러 범위로 다중 피벗 테이블 만드는 방법

엑셀 / 피벗 테이블 / 여러 범위로 다중 피벗 테이블 만드는 방법

피벗 테이블은 보통 하나의 범위 또는 표로 만듭니다. 따라서 여러 개의 범위 또는 표로 피벗 테이블을 만들기 위해서는 하나로 합치는 과정을 거치는데, 그 과정이 번거롭다면 여러 범위(다중 통합 범위)로 피벗 테이블을 만들 수도 있습니다. 어떤 방식이 편한지는 데이터에 따라 다르겠죠. 피벗 테이블/피벗 차트 마법사 메뉴 추가 다중 통합 범위 피벗 테이블을 만들기 ...

엑셀 / 함수 / SUMPRODUCT / 곱의 합 구하는 함수

엑셀 / 함수 / SUMPRODUCT / 곱의 합 구하는 함수

개요 SUMPRODUCT는 곱들의 합을 구하는 함수이다. 이것을 주어진 배열에서 해당 요소를 모두 곱하고 그 곱의 합계를 반환한다고 표현한다. 표현은 복잡하지만, PRODUCT를 구하고 그 다음 SUM을 구한다고 생각하면 된다. 구문 SUMPRODUCT(array1, , ...) 각 배열에 같은 순서에 있는 값들을 곱한 후 다 더한 값을 출력한다. 배열 안의 값의 개수, 즉 차원이 같아야 한다. 만약 다르면 #VALUE! ...

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

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

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

엑셀 / VBA / 주석 만드는 방법

엑셀 / VBA / 주석 만드는 방법

코드는 남아있지만 실행되지 않는 것을 주석이라고 합니다. 주석은 메모를 남길 때 사용하기도 하고, 오류를 찾기 위해 한 줄 씩 실행할 때 사용하기도 합니다. 주석을 만드는 방법은 작은 따옴표를 다는 것입니다. 작은 따옴표 이후의 문자열은 실행되지 않습니다. 주석은 에디터에서 녹색으로 표현됩니다. 여러 줄을 주석으로 만들려면 각 줄에 작은 따옴표를 넣어야 하는데, 많은 양이라면 무척 ...

엑셀 / 산술평균, 기하평균, 조화평균 구하는 방법

엑셀 / 산술평균, 기하평균, 조화평균 구하는 방법

엑셀로 산술평균, 기하평균, 조화평균을 구할 수 있습니다. 사용하는 함수는 다음과 같습니다. 산술평균 : AVERAGE 기하평균 : GEOMEAN 조화평균 : HARMEAN 아래는 각각의 평균을 구하는 간단한 예제입니다. 아래는 위 예제에 대한 수식입니다.

엑셀 / 함수 / CONCAT, CONCATENATE / 여러 텍스트를 하나로 합치는 함수

엑셀 / 함수 / CONCAT, CONCATENATE / 여러 텍스트를 하나로 합치는 함수

개요 CONCATENATE는 여러 문자열을 하나의 문자열로 합하는 함수입니다. Excel 2016, Excel Mobile 및 Excel Online에서는 이 함수가 CONCAT 함수로 대체되었습니다. 이전 버전과의 호환성을 위해 CONCATENATE 함수도 계속 제공되지만 CONCAT을 사용하는 것이 좋습니다. TEXTJOIN 함수를 이용하면 구분 기호 설정을 쉽게 할 수 있고, 빈 셀에 대한 처리 방법도 정할 수 있습니다. 구문 CONCAT(text1, , ...) text1 : 필수 ...

엑셀 / 피벗 테이블 / 외부 파일 시트의 데이터로 피벗 테이블 만드는 방법

엑셀 / 피벗 테이블 / 외부 파일 시트의 데이터로 피벗 테이블 만드는 방법

엑셀의 피벗 테이블은 데이터 분석을 위한 유용한 기능입니다. 피벗 테이블은 보통 같은 파일 내에서 같은 시트 또는 다른 시트에 만들게 되는데, 다른 파일에 있는 데이터로 피벗 테이블을 만들 수도 있습니다. 어떻게 만드는지 그 방법을 알아보겠습니다. 예제 파일 다음과 같은 내용의 Excel_1 파일이 있습니다. 데이터는 표로 지정되었습니다. 이를 Excel_2 파일에 피벗 테이블을 만들 ...