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

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

같은 카테고리의 다른 글
엑셀 / 여러 워크시트 한 화면에서 동시에 보기

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

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

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

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

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

엑셀 / 함수 / 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으로 정하면 큰 수가 ...

엑셀 / VBA / 매크로 만들고 실행하기

엑셀 / VBA / 매크로 만들고 실행하기

간단한 예제로, VBA로 매크로를 만들고 실행하는 과정을 살펴보겠습니다.(개발 도구 메뉴가 없는 경우 옵션 변경으로 추가할 수 있습니다.) 을 클릭합니다.(단축키는 Alt+F11입니다.) 다음과 같은 에디터 창이 나오는데... 을 클릭합니다. 코드를 넣을 수 있는 창이 나오는데... 다음 코드를 입력합니다. Sub SayHello() Sheet1.Range("A1").Value = "HELLO" End ...

엑셀 / 함수 / INT, TRUNC / 소수를 정수 만드는 함수

엑셀 / 함수 / INT, TRUNC / 소수를 정수 만드는 함수

개요 소수를 정수로 만드는 함수에는 INT 함수와 TRUNC 함수가 있습니다. 정수로 만든다는 점은 같지만, 정수로 만드는 방식에는 차이가 있으므로 사용에 주의를 해야 합니다. 차이점 1 INT 함수는 작거나 같은 정수로 만듭니다. 예를 들어 INT(2.6) 은 2.6보다 작은 정수인 2가 되고, INT(-2.6) 은 -2.6보다 작은 정수인 -3이 됩니다. TRUNC 함수는 소수점 아래의 수를 지워버립니다. 예를 들어 TRUNC(2.6) 은 소수점 아래의 수 6을 ...

엑셀 / 가로 방향으로 정렬하는 방법

엑셀 / 가로 방향으로 정렬하는 방법

엑셀에서 정렬할 때 대부분 세로 방향으로 정렬합니다. 데이터를 세로 방향으로 정리하는 경우가 많기 때문입니다. 엑셀의 기본 정렬 방향도 위에서 아래로 향하는 세로 방향입니다. 그런데 항상 그런 건 아닙니다. 경우에 따라서 데이터를 가로 방향으로 정리하기도 있습니다. 그렇다면 정렬을 할 때에도 가로 방향으로 해야겠죠? 어떻게 해야 가로 방향 정렬을 할 수 있을까요? 해결책은 옵션에 ...

엑셀 / 메모 삽입하는 방법, 메모 삭제하는 방법, 메모 일괄 삭제하는 방법

엑셀 / 메모 삽입하는 방법, 메모 삭제하는 방법, 메모 일괄 삭제하는 방법

엑셀의 메모 기능을 이용하면 셀에 대한 설명을 남길 수 있습니다. 복잡한 계산을 했거나 공동 작업을 할 때 유용한 기능입니다. 어떻게 메모를 삽입하고 삭제할 수 있는지 알아보겠습니다. 메모 삽입하는 방법 메모를 삽입하고자 하는 셀에 마우스를 올리고 우클릭을 합니다. 팝업 메뉴에서 을 클릭합니다. 메모 삽입 단축키는 입니다. 포스트잇처럼 생긴 작은 창이 생기고, 그 ...

엑셀 / 함수 / PRODUCT / 곱하기 함수

엑셀 / 함수 / PRODUCT / 곱하기 함수

개요 PRODUCT는 곱을 구하는 함수이다. 곱은 *를 이용하여 구할 수도 있으나, 곱할 값들이 많으면 PRODUCT가 편하다. 구문 PRODUCT(number1, , ...) number1 : 필수 요소로, 곱하려는 첫 번째 숫자 또는 범위 number2, ... : 선택 요소로, 곱하려는 추가 숫자 또는 범위 최대 255개의 인수를 곱할 수 있다. 예제 예제 1 값을 지정하여 세 개의 값을 곱한다. 다음과 같은 결과를 얻는다. =A2*B2*C2 예제 2 범위를 ...

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

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

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

엑셀 / 날짜를 텍스트로, 텍스트를 날짜로 변환하는 방법

엑셀 / 날짜를 텍스트로, 텍스트를 날짜로 변환하는 방법

날짜를 텍스트로 변환 날짜 형식의 데이터는 날짜처럼 보이지만, 실제 값은 1900년 1월 1일부터 시작되는 일련 번호이다. 즉, 1900-01-01은 1이고, 1900-01-02는 2이다. 날짜는 계산에 사용할 수 있도록 순차적인 일련 번호로 저장됩니다. 기본적으로 1900년 1월 1일이 일련 번호 1이고, 2008년 1월 1일은 1900년 1월 1일 이후 39,447일이 지난 날짜이므로 일련 번호가 39448입니다. 따라서 날짜 2022-10-25를 ...