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

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

같은 카테고리의 다른 글
엑셀 / VBA / Visual Basic Editor 글꼴 변경하는 방법

엑셀 / VBA / Visual Basic Editor 글꼴 변경하는 방법

엑셀에서 VBA(Visual Basic for Application) 코드를 작성할 때 Visual Basic Editor를 사용합니다. 코드 하이라이트도 되고 자동 고침도 가능해서 여러모로 편한데, 글꼴이 별로입니다. 기본 글꼴이 돋움체거든요. 코딩 작업을 자주 한다면 가독성 좋은 고정폭 글꼴로 변경하는 것이 좋습니다.(개인적으로 한글이 섞어도 보기 좋은 D2Coding 글꼴을 사용합니다.) Visual Basic Editor의 글꼴을 변경하는 방법은... Visual Basic Editor를 열고 ...

엑셀 / 메모 인쇄하는 방법

엑셀 / 메모 인쇄하는 방법

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

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

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

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

엑셀 / 함수 / 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를 바꿉니다. 예제 예제 ...

엑셀 / 암호 설정하는 방법, 암호 해제하는 방법

엑셀 / 암호 설정하는 방법, 암호 해제하는 방법

암호 종류 엑셀에는 두 가지 암호가 있어요. 하나는 열기 암호, 또 하나는 쓰기 암호입니다. 둘 중 하나만 설정해도 되고, 둘 다 설정해도 돼요. 열기 암호를 설정하면 문서를 열 때 암호가 필요합니다. 암호를 모르면 문서 내용을 볼 수 없어요. 쓰기 암호를 설정하면 문서를 수정할 때 암호가 필요합니다. 암호를 몰라도 문서의 내용은 볼 수 있어요. 열기 암호와 ...

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

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

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

엑셀 / 기호, 특수 문자 입력하는 방법

엑셀 / 기호, 특수 문자 입력하는 방법

엑셀에 기호 또는 특수 문자를 입력하는 방법은 두 가지가 있습니다. 삽입 - 메뉴 상단에서 를 클릭합니다. 글꼴을 바꾸가면서 필요한 기호를 찾습니다. 기호를 선택한 후 을 클릭하면 기호가 셀에 삽입됩니다. 자음 + 한자 ㄱ, ㄴ 등 자음을 입력하고 한자 키를 누릅니다. 그러면 특수 문자가 나옵니다. 화살표를 클릭하면 입력할 수 있는 기호를 ...

엑셀 / 나누기, 몫 구하기, 나머지 구하기

엑셀 / 나누기, 몫 구하기, 나머지 구하기

나누기 나누기는 슬래시 기호로 해요. 예를 들어 6 나누기 2는 6/2 와 같이 하면 됩니다. 몫 구하기 나누었을 때의 몫만 구하고 싶다면 QUOTIENT 함수를 이용하면 돼요. QUOTIENT(numerator, denominator) numerator에는 피제수, denominator에는 제수를 넣습니다. 나머지 구하기 나누었을 때의 나머지만 구하고 싶다면 MOD 함수를 사용합니다. MOD(number, divisor) number에는 피제수, divisor에는 제수를 입력합니다. 예제 다음은 100을 8로 나누어보고, 몫을 구하고, 나머지를 구하는 예제입니다.

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

엑셀 / 스파크라인 / 데이터를 시각적으로 보여주기

엑셀 / 스파크라인 / 데이터를 시각적으로 보여주기

스파크라인 스파크라인은 데이터를 시각적으로 나타내줍니다. 챠트와 비슷해서 미니 챠트라고 부르기도 합니다. 챠트와 스파크라인의 차이점 중의 하나는, 스파크라인은 셀에 속한다는 것입니다. 그리고 셀의 값이 아니라 배경으로 만들어집니다. 스파크라인 만들기 이 있습니다. 적절한 모양을 정하고 클릭합니다.(모양은 나중에 바꿀 수 있습니다.) 라는 창이 뜹니다. 범위를 선택하고 을 클릭하면 스파크라인이 만들어집니다. 스파크라인 모양 바꾸기 스파크라인을 선택하면 디자인 탭이 ...