🖥️ IT, 컴퓨터/🧮 엑셀

[Excel] 엑셀에서 여러 시트에서 특정 열만 추출해서 새로운 파일로 저장하기 :: VBA 이용

김 홍시 2024. 7. 15.
반응형

 

문제상황

 

- 필자는 30개 넘는 시트가 있고, 그 시트별로 F에서 N열까지 (모든 시트에 대해 동일) 데이터를 추출해야 하는 상황이다.

- 이럴 때 VBA 코드를 돌리면 4초만에 해결 가능하다.

 

 

해결방법

 

 

 

엑셀에서 VBA(Visual Basic for Applications)를 사용하여 여러 개의 시트에서 특정 열을 추출하고 새로운 파일로 저장하는 과정을 자동화할 수 있습니다. 다음은 그 방법입니다.

  1. 엑셀 VBA 편집기 열기
    • Alt + F11 키를 눌러 VBA 편집기를 엽니다.
  2. 새 모듈 추가
    • Insert 메뉴에서 Module을 선택하여 새 모듈을 추가합니다.
  3. 코드 작성
    • 아래 코드를 복사하여 새 모듈에 붙여넣습니다.
Sub ExtractColumnsAndSave()
    Dim ws As Worksheet
    Dim newWb As Workbook
    Dim newWs As Worksheet
    Dim lastRow As Long
    Dim newSheetIndex As Integer
    Dim currentSheetName As String

    ' 새 워크북 생성
    Set newWb = Workbooks.Add

    newSheetIndex = 1

    ' 현재 워크북의 각 시트를 순회
    For Each ws In ThisWorkbook.Sheets
        ' 새로운 시트 추가
        Set newWs = newWb.Sheets(newSheetIndex)

        ' 시트 이름 복사
        currentSheetName = ws.Name
        newWs.Name = currentSheetName

        ' 마지막 행 찾기
        lastRow = ws.Cells(ws.Rows.Count, "F").End(xlUp).Row

        ' F열에서 N열까지 복사
        ws.Range("F1:N" & lastRow).Copy Destination:=newWs.Range("A1")

        newSheetIndex = newSheetIndex + 1
        If newSheetIndex > newWb.Sheets.Count Then
            newWb.Sheets.Add After:=newWb.Sheets(newWb.Sheets.Count)
        End If
    Next ws

    ' 새로운 워크북 저장
    newWb.SaveAs Filename:="ExtractedColumns.xlsx"
    newWb.Close

    MsgBox "추출된 열이 새 파일로 저장되었습니다."
End Sub
  1. 매크로 실행
    • VBA 편집기를 닫고 엑셀로 돌아갑니다.
    • Alt + F8 키를 눌러 매크로 목록을 엽니다.
    • ExtractColumnsAndSave 매크로를 선택하고 실행 버튼을 클릭합니다.

위 코드는 현재 엑셀 파일의 모든 시트를 순회하며, 각 시트의 F열에서 N열까지의 데이터를 새로운 워크북에 복사한 후, ExtractedColumns.xlsx 파일로 저장합니다. 필요에 따라 파일 이름이나 경로를 수정할 수 있습니다.

이 방법으로 엑셀에서 자동화된 과정을 통해 원하는 열을 추출하고 새로운 파일로 저장할 수 있습니다.

 

 

주의

- 파일 이름에 전체 경로까지 넣어주는 게 더 편함

- 자기 파일은 몇 열에서 몇 열까지 뽑아야 하는지 확인한 후, 코드에 반영할 것  

해결 완료

해당 열의 내용만 새로운 파일로 추출되었음 

반응형

댓글