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

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

같은 카테고리의 다른 글
엑셀 / 시트의 눈금선 없애는 방법

엑셀 / 시트의 눈금선 없애는 방법

눈금선 엑셀의 시트에는 선이 있어요. 모니터에만 나오고 인쇄할 때는 나오지 않는 선이에요. 이 선을 눈금선이라고 합니다. 눈금선이 있는 이유는 셀의 위치를 파악하기 쉽게 하려는 거에요. 눈금선 없이 한동안 써봤는데 꽤 불편하더군요. 눈금선이 있는 게 좋아요. 그런데, 눈금선이 있는 게 더 불편한 경우가 있어요. 바로 모양을 꾸밀 때에요. 인쇄용 보고서를 만들기 위해 선을 그리고 ...

엑셀 / 함수 / YEAR, MONTH, DAY / 년, 월, 일 반환하는 함수

엑셀 / 함수 / YEAR, MONTH, DAY / 년, 월, 일 반환하는 함수

개요 YEAR, MONTH, DAY는 날짜에서 년, 월, 일을 추려내는 함수입니다. 구문 YEAR(serial_number) MONTH(serial_number) DAY(serial_number) 예제 아래는 2019년 10월 20일이라는 날짜에서 년, 월, 일을 출력하는 예제입니다. serial_number 날짜는 일련번호로 저장됩니다. 이를 엑셀에서는 serial_number라고 합니다. 1은 1900년 1월 1일을 뜻하고, 2는 1900년 1월 2일을 뜻합니다. 0 또는 빈 값은 1900년 1월 0일입니다. 날짜 형식으로 표현된 값이 있을 때... 표시 형식을 일반으로 변경하면... serial_number를 볼 ...

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

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

개요 TEXTJOIN은 여러 문자열을 합하여 하나의 문자열로 만드는 함수입니다. CONCAT과 비슷하나, 구분 기호와 빈 셀 처리에 대한 설정이 가능합니다. 구문 TEXTJOIN(delimiter, ignore_empty, text1, , …) delimiter : 문자열 사이에 들어갈 구분 기호입니다. ignore_empty : 빈 셀을 무시할지 정합니다. TRUE면 무시하고, FALSE면 무시하지 않습니다. text1 : 연결할 텍스트 항목입니다. text2 : 연결할 추가 텍스트 항목입니다. 예제 예제 1 구분 기호 없이, 빈 ...

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

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

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

엑셀 / 함수 / DATEDIF / 두 날짜 사이의 일수, 월수, 년수 등을 계산하는 함수

엑셀 / 함수 / DATEDIF / 두 날짜 사이의 일수, 월수, 년수 등을 계산하는 함수

개요 DATEDIF는 두 날짜 사이의 일수, 월수, 년수 등을 계산하는 함수입니다. 구문 DATEDIF(start_date,end_date,unit) start_date : 시작하는 날짜입니다. end_date : 끝나는 날짜입니다. unit : 반환할 정보의 형식입니다. Y, M, D, YM, YD 등을 사용할 수 있습니다. Y는 년수, M은 월수, D는 일수, YM은 년도를 무시한 월수, YD는 년도를 무시한 일수를 반환합니다. start_date가 end_date보다 이후라면 #NUM!를 반환합니다. 예제 다음은 2018년 1월 15일부터 2019년 6월 5일까지의 ...

엑셀 / 화살표 키 눌렀을 때 스크롤 되는 현상 해결하는 방법

보통 셀이 선택된 상태에서 화살표 키를 누르면 선택된 셀이 이동한다. 예를 들어 A1이 선택된 상태에서 오른쪽 화살표 키를 누르면 B1이 선택된다. 그런데, 선택된 셀이 이동하는 게 아니라 시트 자체가 스크롤 되는 경우가 있다. 그렇게 되는 이유는 자신도 모르게 Scroll Lock를 눌렀기 때문... 다시 Scroll Lock을 누르면 원래대로 돌아온다.

엑셀 / 인쇄 / 바닥글에 총 페이지 수, 현재 페이지 번호 표시하는 방법

엑셀 / 인쇄 / 바닥글에 총 페이지 수, 현재 페이지 번호 표시하는 방법

엑셀 워크시트를 인쇄할 때 페이지를 표시하는 게 좋습니다. 그래야 정리하기도 편하고, 찾기도 편합니다. 현재 페이지 번호만 인쇄를 하면 마지막 장을 잃어버려도 잃어버린지 모릅니다. 그런 문제를 해결하기 위해서는 전체 페이지 수도 같이 인쇄합니다. 현재 페이지 번호화 전체 페이지 수를 어떻게 바닥글에 넣고 인쇄하는지 알아보겠습니다. 페이지 설정 인쇄 화면에 있는 을 클릭합니다.(인쇄 미리보기 단축키는 Ctrl+P입니다.) 바닥글에서 ...

엑셀 / 메모 인쇄하는 방법

엑셀 / 메모 인쇄하는 방법

셀에 넣은 메모를 인쇄하는 방법은 두 가지가 있다. 하나는 화면에 보이는대로 인쇄하는 것이고, 다른 하나는 마지막 페이지에 모아서 인쇄하는 것이다. 만약 화면에 보이는대로 인쇄하고 싶다면, 메모가 있는 셀을 선택하고 마우스 우클릭한 후... 를 클릭하여 메모를 표시한다. 마지막 페이지에 모아서 출력할 때는 필요 없는 과정이다. 인쇄(Ctrl+P)에서 을 클릭하고... 탭을 선택한 후, [주석 ...

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

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

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

엑셀 / 여러 조건 LOOKUP

엑셀 / 여러 조건 LOOKUP

LOOKUP을 이용하면 여러 조건을 만족하는 값을 찾을 수 있다. =LOOKUP(1,1/((A1:A4=E1)*(B1:B4=F1)),C1:C4)