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

엑셀 / 함수 / LARGE, SMALL / k번째로 큰 값, 작은 값 구하는 함수

엑셀 / 함수 / LARGE, SMALL / k번째로 큰 값, 작은 값 구하는 함수

개요 LARGE는 데이터 집합에서 k번째로 큰 값을 반환하는 함수입니다. SMALL은 데이터 집합에서 k번째로 작은 값을 반환하는 함수입니다. 구문 LARGE(array,k) ​SMALL(array,k) array : 필수 요소로, 데이터 집합입니다. k : 필수 요소입니다. 몇 번째로 큰 값 또는 작은 값을 찾을지 정합니다. 예제 예제 1 10, 20, 30, 40, 50 중에서 2번째로 큰 값 또는 작은 값을 구합니다. 예제 2 10, 20, 30, 40, 50 중에서 첫 ...

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

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

엑셀 / ROUND - 반올림, ROUNDUP - 올림, ROUNDDOWN - 내림

엑셀 / ROUND - 반올림, ROUNDUP - 올림, ROUNDDOWN - 내림

개요 반올림은 ROUND 함수로, 올림은 ROUNDUP 함수로, 내림은 ROUNDDOWN 함수로 합니다. 구문 반올림 ROUND(number, num_digits) number 필수 요소입니다. 반올림할 숫자입니다. num_digits 필수 요소입니다. 반올림할 자릿수입니다. 예를 들어 =ROUND(1234.5678,2) 는 소수 셋째 자리에서 반올림하여 소수 둘째 자리까지 나타냅니다. =ROUND(1234.5678,0) 은 소수 첫째 자리에서 반올림하여 일의 자리까지 나타내고, =ROUND(1234.5678,-2) 는 십의 자리에서 반올림하여 백의 자리까지 나타냅니다. 올림 ROUNDUP(number, num_digits) number 필수 요소입니다. 올림할 숫자입니다. num_digits 필수 요소입니다. 올림할 자릿수입니다. 자릿수의 의미는 반올림과 같습니다. -2이면 소수 ...

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

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

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

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

엑셀 / 함수 / RADIANS, DEGREES / 도를 라디안으로, 라디안을 도로 변환하는 함수

엑셀 / 함수 / RADIANS, DEGREES / 도를 라디안으로, 라디안을 도로 변환하는 함수

개요 RADIANS는 도를 라디안으로, DEGREES는 라디안을 도로 변환하는 함수입니다. 구문 RADIANS(angle) angle : 필수 요소입니다. 변환할 도 단위의 각도를 입력합니다. DEGREES(angle) angle : 필수 요소입니다. 변환할 라디안 단위의 각도를 입력합니다. 파이는 PI() 함수를 이용합니다. 예제

엑셀 / 함수 / DELTA / 두 숫자가 같은지 비교하는 함수

엑셀 / 함수 / DELTA / 두 숫자가 같은지 비교하는 함수

개요 DELTA는 두 수가 같은지 비교하는 함수입니다. 구문 DELTA(number1, ) number1 : 필수 요소로, 숫자입니다. number2 : 선택 요소로, 숫자입니다. 두 수가 같으면 1을, 다르면 0을 반환합니다. 두 번째 인수를 생략하면 0으로 간주합니다. 예를 들어 DELTA(0)은 1이고, DELTA(1)은 0입니다. 참조하는 셀이 비어있으면 0으로 간주합니다. 인수에 숫자가 아닌 값이 있으면 #VALUE! 오류 값이 반환됩니다. 예제 두 문자열이 같은지 비교하는 함수는 EXACT입니다.

엑셀 / 함수 / SUBSTITUTE / 문자열 바꾸기

엑셀 / 함수 / SUBSTITUTE / 문자열 바꾸기

개요 SUBSTITUTE는 특정 문자열을 찾아서 다른 문자열로 바꾸는 함수입니다. 구문 SUBSTITUTE(text, old_text, new_text, ) text : 필수 요소로, 문자열을 바꿀 텍스트가 있는 셀의 참조 또는 텍스트입니다. old_text : 필수 요소로, 바꿀 텍스트입니다. new_text : 필수 요소로, old_text를 대신할 텍스트입니다. instance_num : 선택 요소로, 몇 번째에 있는 old_text를 new_text로 바꿀 것인지 정합니다. 예를 들어 1이면 첫번째 old_text만, 2이면 두번째 old_text만 바꿉니다. 정하지 않으면 모든 old_text를 바꿉니다. 예제 예제 ...

엑셀 / 함수 / SUMSQ / 제곱의 합 구하는 함수

엑셀 / 함수 / SUMSQ / 제곱의 합 구하는 함수

개요 SUMSQ는 제곱의 합을 구하는 함수입니다. 구문 SUMSQ(number1, , ...) number1, number2, ... : number1은 필수 요소이고, 이후의 number는 선택 요소입니다. 인수는 255개까지 넣을 수 있습니다. 예제 1부터 4까지 제곱의 합을 구합니다.