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

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

같은 카테고리의 다른 글
엑셀 / 함수 / IRR / 내부수익률 계산하는 함수

엑셀 / 함수 / IRR / 내부수익률 계산하는 함수

개요 IRR 함수는 주기적인 현금 흐름에 대한 내부수익률(internal rate of return)을 반환하는 함수입니다. 구문 IRR(values, ) values 필수 요소로, 셀에 대한 참조 또는 배열입니다. 양수 값과 음수 값이 각각 한 개 이상씩 포함되어야 합니다. 텍스트, 논리값 또는 빈 셀은 무시됩니다. guess 선택 요소로, IRR 계산에 처음 사용할 값입니다. guess에서 시작하여 결과가 0.00001% 이내의 오차 범위에 들어올 때까지 반복합니다. guess를 생략하면 0.1(10%)로 간주합니다. 20번 이상 반복한 후에도 ...

엑셀 / 함수 / COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS

엑셀 / 함수 / COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS

개요 셀 개수를 세는 함수에는 COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS가 있다. COUNT는 숫자가 있는 셀의 개수, COUNTA는 비어 있지 않은 셀의 개수, COUNTBLANK는 비어 있는 셀의 개수, COUNTIF는 조건에 맞는 셀의 개수, COUNTIFS는 여러 조건에 맞는 셀의 개수를 반환한다. 구문 COUNT COUNT(value1, , ...) 숫자가 있는 셀의 개수를 반환한다. 비어 있거나 문자가 있는 셀은 세지 않는다. COUNTA COUNTA(value1, , ...

엑셀 / 함수 / EXACT / 두 텍스트(문자열)이 같은지 비교하는 함수

엑셀 / 함수 / EXACT / 두 텍스트(문자열)이 같은지 비교하는 함수

개요 EXACT는 두 문자열이 같은지 비교하는 함수입니다. 구문 EXACT(text1, text2) text1 : 필수 요소로 첫 번째 문자열입니다. text2 : 필수 요소로 두 번째 문자열입니다. 두 문자열이 같으면 TRUE, 같지 않으면 FALSE를 반환합니다. 숫자도 문자처럼 취급하여 비교합니다. 예제 두 숫자가 같은지 비교하는 함수는 DELTA입니다.

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

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

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

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

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

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

엑셀 / 함수 / ISBLANK / 빈 셀인지 확인하는 함수

엑셀 / 함수 / ISBLANK / 빈 셀인지 확인하는 함수

개요 ISBLANK는 셀이 비어있는지 확인하는 함수입니다. 셀이 비어있다면 TRUE, 셀이 비어있지 않다면 FALSE를 반환합니다. 예제 1 예를 들어 ISBLANK(A2) 는 A2 셀이 비어있다면 TRUE, 비어있지 않다면 FALSE를 반환합니다. IF 함수와 결합하여 비어있을 때와 비었지 않을 때 서로 다른 작업을 할 수 있습니다. 예를 들어 IF(ISBLANK(A2),"B","NB") 는 A2 셀이 비어있다면 B를, 비어있지 않다면 NB를 출력합니다. 예제 2 수량과 단가를 곱하여 금액을 ...

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

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

엑셀 / 함수 / LEN, LENB / 문자열의 문자 수, 바이트 수 구하는 함수

엑셀 / 함수 / LEN, LENB / 문자열의 문자 수, 바이트 수 구하는 함수

개요 LEN은 문자열의 문자 수를, LENB는 문자열의 바이트 수를 구하는 함수입니다. 구문 LEN(text) LENB(text) text : 필수 요소로, 길이를 구하려는 문자열입니다. 공백은 1개의 문자, 1바이트의 문자로 계산합니다. 한국어, 일본어, 중국어는 한 문자를 2바이트로 계산합니다. 예를 들어 LEN("가")는 1, LENB("가")는 2입니다. 예제 예제 1 ABCDE는 모두 1바이트 문자이므로, LEN과 LENB 모두 5를 반환합니다. 예제 2 공백은 1개의 문자, 1바이트 문자로 계산합니다. 예제 3 한국어, 일본어, 중국어는 1개의 문자를 ...

엑셀 / 함수 / ADDRESS / 셀 주소 확인하는 함수

엑셀 / 함수 / ADDRESS / 셀 주소 확인하는 함수

개요 ADDRESS는 행과 열 번호를 지정하면 셀 주소를 반환하는 함수이다. 구문 ADDRESS(row_num, column_num, ) row_num 필수 요소로, 셀 참조에 사용할 행 번호 column_num 필수 요소로, 셀 참조에 사용할 열 번호 abs_num 선택 요소로, 반환할 참조 유형을 지정 1은 절대 행 절대 열, 2는 절대 행 상대 열, 3은 상대 행 절대 열, 4는 상대 행 상대 열 기본값은 1 a1 선택 ...

엑셀 / 랜덤 정렬하는 방법

엑셀 / 랜덤 정렬하는 방법

엑셀은 셀의 값, 셀의 색, 글자 색 등을 기준으로 정렬할 수 있습니다. 보통은 특정 기준으로 차례대로 정렬하는 것이 보기 좋습니다. 하지만 간혹 랜덤하게 나열해야하는 경우도 있습니다. 예를 들어 영어 단어 시험지를 만들 때, 순서 다른 여러 가지를 만들면 부정 행위의 위험을 줄일 수 있겠죠. 안타깝게도 엑셀에는 랜덤 정렬이라는 게 없어서 편법을 사용해야 ...