여러 시트의 표를 하나의 시트로 결합

여러 시트의 표를 하나의 시트로 결합

30장이 넘는 엑셀 문서가 있습니다. 각각은 동일한 레이아웃을 갖습니다. 동일한 열, 머리글/전체 행이 있지만 행 수가 다른 간단한 테이블입니다(행이 500개를 초과하는 테이블은 없습니다).

나는 그것들을 마스터 테이블로 결합하고 싶습니다. 한 번만 작동합니다.

수동으로 새 워크시트에 30개의 테이블을 차례로 복사할 수 있었습니다. 완료되면 정렬을 수행하고 빈/머리글/전체 행을 삭제합니다. 나는 형식에 관심이 없습니다. 대략 15~20분 정도 걸릴 것 같지만, 실수를 해서 시트 등을 놓칠 위험이 항상 있습니다.

VBA는 시간이 너무 많이 걸릴 것 같습니다. 지금은 통합 문서를 SQL Server로 가져오고 UNION한 다음 결과를 다시 Excel에 복사하여 붙여넣는 것을 거의 고려하고 있습니다.

좋은 비결이 있나요?

답변1

이것이 자주 수행해야 하는 작업이라면 빠른 VBA 루틴을 작성하는 것이 좋습니다. 일회성이라면 그냥 수동으로 할게요. 실수로 표를 건너뛰는 일이 없도록 하려면 복사-붙여넣기 대신 잘라내어 붙여넣기를 사용하세요.

이 작업을 수행하는 방법은 다음과 같습니다. 키보드 단축키를 사용하면 상당히 빠르게 진행됩니다.

  • 실수로 데이터가 손실되는 것을 방지하기 위해 Excel에서 원본 통합 문서를 읽기 전용으로 엽니다.
  • 새 마스터 테이블을 보관할 새 통합 문서를 엽니다.
  • 작업 중인 두 통합 문서 간에 쉽게 전환할 수 있도록 다른 통합 문서를 모두 닫습니다.
  • 복사하려는 원본 통합 문서의 첫 번째 워크시트를 선택합니다.

이제 키보드 단축키를 사용할 수 있습니다.

  1. Ctrl + Home스프레드시트의 왼쪽 상단으로 이동합니다. (고정된 행이나 열이 없으면 A1로 이동합니다.)
  2. Shift + Ctrl + End현재 선택한 셀의 왼쪽과 아래에 있는 모든 항목을 선택합니다.
  3. Ctrl + X데이터를 잘라냅니다.
  4. Ctrl + Tab새 통합 문서로 전환합니다.
  5. 올바른 위치에 있는지 다시 확인하고 를 눌러 Enter데이터를 붙여넣으세요.
  6. Ctrl + End붙여넣은 마지막 셀로 이동합니다.
  7. Down Arrow사용하지 않은 다음 행으로 이동합니다.
  8. Ctrl + Left ArrowA열로 돌아갑니다.
  9. Ctrl + Tab원래 통합 문서로 다시 전환합니다.
  10. Ctrl + Page Down다음 워크시트를 선택합니다.
  11. 1단계로 돌아가 완료될 때까지 반복합니다.

완료되면 Ctrl + Page Up모든 원본 워크시트를 다시 살펴보고 모든 데이터가 제거되었는지 확인할 수 있습니다.

제목 행이 고정되지 않았다고 가정하면 30개 테이블 모두에서 제목 행이 복사됩니다. 이 경우 마스터 테이블을 정렬하여 모든 중복 제목 행을 그룹화하고 추가 항목을 삭제하거나 데이터 -> 중복 제거를 사용합니다.

실수로 단계를 건너뛰거나 기존 데이터 위에 붙여넣은 경우 실행 Ctrl + Z을 취소하려면 누르세요.

방금 위의 단계에 따라 테스트를 수행했습니다. 제가 사용한 통합 문서에는 각각 120행의 데이터가 포함된 10개의 워크시트가 있었습니다. 마스터 테이블을 생성하는 데 1분 30초가 걸렸습니다. 키보드 단축키에 익숙하지 않으면 시간이 두 배 더 걸릴 수 있습니다. 30개의 워크시트의 경우 10분 정도 걸릴 것 같습니다.

답변2

동일한 문제를 추가했는데 여기에서 멋진 매크로를 찾았습니다. http://excel.tips.net/T003005_Condensing_Multiple_Worksheets_Into_One.html

Sub Combine()
    Dim J As Integer

    On Error Resume Next
    Sheets(1).Select
    Worksheets.Add ' add a sheet in first place
    Sheets(1).Name = "Combined"

    ' copy headings
    Sheets(2).Activate
    Range("A1").EntireRow.Select
    Selection.Copy Destination:=Sheets(1).Range("A1")

    ' work through sheets
    For J = 2 To Sheets.Count ' from sheet 2 to last sheet
        Sheets(J).Activate ' make the sheet active
        Range("A1").Select
        Selection.CurrentRegion.Select ' select all cells in this sheets

        ' select all lines except title
        Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select

        ' copy cells selected in the new sheet on last line
        Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
    Next
End Sub

매크로를 복사하여 붙여넣고 실행하면 완료됩니다!

관련 정보