엑셀 / 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를 볼 ...

엑셀 / 함수 / LEFT, LEFTB, MID, MIDB, RIGHT, RIGHTB / 문자열 추출 함수

엑셀 / 함수 / LEFT, LEFTB, MID, MIDB, RIGHT, RIGHTB / 문자열 추출 함수

LEFT, LEFTB LEFT는 텍스트 문자열의 첫 번째 문자부터 시작하여 지정한 문자 수만큼 문자를 반환한다. LEFT(text, ) LEFTB는 텍스트 문자열의 첫 번째 문자부터 시작하여 지정한 바이트 수만큼 문자를 반환한다. LEFTB(text, ) 영문자 등은 한 문자가 1바이트이므로 결과에 차이가 없다. 하지만, 한글 등 2바이트 문자라면 차이가 난다. 수식으로 계산된 결과에 대해서도 적용할 수 있다. MID, MIDB MID는 텍스트 문자열에서 지정된 ...

엑셀 / 행과 열 바꾸는 방법

엑셀 / 행과 열 바꾸는 방법

제품 A와 제품 B를 판매하고 있습니다. 날짜별 제품 판매량을 엑셀로 정리하려고 합니다. 그래서 아래와 같이 열은 날짜로, 행은 제품으로 기준을 정하고 입력을 했더니, 날짜가 지날수록 표가 가로로 길어집니다. 계속 길어지면 스크롤 하면서 내용을 봐야 하는데 가로 스크롤보다는 세로 스크롤이 편합니다. 데이터가 많이 입력된 상태에서 행과 열을 어떻게 쉽게 바꿀 수 있을까요? 해결책은 ...

엑셀 / 셀 안에서 강제 줄바꿈하는 방법

엑셀 / 셀 안에서 강제 줄바꿈하는 방법

셀 안에서 줄바꿈을 하고 싶다면 Alt + Enter를 누릅니다. 줄바꿈한 내용을 수식입력줄에서 보고 싶다면, 오른쪽 끝에 있는 아이콘을 클릭합니다.

엑셀 / 함수 / 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일까지의 ...

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

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

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

엑셀 / 중복된 값 찾는 방법, 중복 항목 제거하는 방법

엑셀 / 중복된 값 찾는 방법, 중복 항목 제거하는 방법

엑셀로 자료를 취합하고 정리하다보면 중복된 값들이 생기기도 합니다. 그런 중복 항목을 찾기 위해 눈으로 검토할 필요는 없습니다. 엑셀에는 중복된 항목을 찾거나, 찾아서 제거하는 기능이 있기 때문입니다. 중복 값 찾기 중복 값을 찾을 열을 선택합니다. 을 클릭합니다. 을 클릭하면... 중복된 값이 강조됩니다. 조건부 서식에서 를 ...

엑셀 / 로그 또는 상용로그의 값 구하기, 상용로그표 만들기

엑셀 / 로그 또는 상용로그의 값 구하기, 상용로그표 만들기

로그 또는 상용로그의 값 구하기 로그의 값을 구하는 함수는 LOG에요. 외우기 쉽게 이름을 만들었네요. LOG(number, ) number에는 진수, base에는 밑이 들어가요. 즉 LOG(8, 2) 는 log28을 뜻합니다. 만약 base가 생략되었다면 밑을 10으로 계산해요. 밑이 10인 로그를 상용로그라고 하는 거 기억하시죠? 상용로그의 값은 함수 LOG10을 사용해도 돼요. LOG10(number) 따라서 상용로그의 값을 구하는 방법은 세가지가 있습니다. LOG(100, 10) LOG(100) ​LOG10(100) 상용로그표 만들기 상용로그표를 만들어볼게요. 고등학교 때 수학 ...

엑셀 / 통합 문서 모든 시트 대상으로 검색하는 방법

엑셀 / 통합 문서 모든 시트 대상으로 검색하는 방법

기본 검색 대상 엑셀은 찾기 기능이 있습니다. Ctrl+F로 찾기 창을 연 후 검색어를 입력하고 검색하면 됩니다. 검색을 하면 그 대상이 필요한데, 기본 설정은 현재 워크시트입니다. 현재 워크시트에 검색어가 있으면 그 위치로 이동하고, 없다면 찾을 수 없다고 알려줍니다. 다른 워크시트에 그 검색어가 있어도 검색 대상이 현재 워크시트이므로 없다고 나옵니다. 모든 워크시트를 대상으로 검색하기 검색 대상을 변경해서 ...

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