반응형
문제상황
- 필자는 30개 넘는 시트가 있고, 그 시트별로 F에서 N열까지 (모든 시트에 대해 동일) 데이터를 추출해야 하는 상황이다.
- 이럴 때 VBA 코드를 돌리면 4초만에 해결 가능하다.
해결방법
엑셀에서 VBA(Visual Basic for Applications)를 사용하여 여러 개의 시트에서 특정 열을 추출하고 새로운 파일로 저장하는 과정을 자동화할 수 있습니다. 다음은 그 방법입니다.
- 엑셀 VBA 편집기 열기
Alt + F11
키를 눌러 VBA 편집기를 엽니다.
- 새 모듈 추가
Insert
메뉴에서Module
을 선택하여 새 모듈을 추가합니다.
- 코드 작성
- 아래 코드를 복사하여 새 모듈에 붙여넣습니다.
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
- 매크로 실행
- VBA 편집기를 닫고 엑셀로 돌아갑니다.
Alt + F8
키를 눌러 매크로 목록을 엽니다.ExtractColumnsAndSave
매크로를 선택하고실행
버튼을 클릭합니다.
위 코드는 현재 엑셀 파일의 모든 시트를 순회하며, 각 시트의 F열에서 N열까지의 데이터를 새로운 워크북에 복사한 후, ExtractedColumns.xlsx
파일로 저장합니다. 필요에 따라 파일 이름이나 경로를 수정할 수 있습니다.
이 방법으로 엑셀에서 자동화된 과정을 통해 원하는 열을 추출하고 새로운 파일로 저장할 수 있습니다.
주의
- 파일 이름에 전체 경로까지 넣어주는 게 더 편함
- 자기 파일은 몇 열에서 몇 열까지 뽑아야 하는지 확인한 후, 코드에 반영할 것
해결 완료
해당 열의 내용만 새로운 파일로 추출되었음
반응형
'🖥️ IT, 컴퓨터 > 🧮 엑셀' 카테고리의 다른 글
[Excel] 엑셀 xlsx 파일의 모든 시트를 csv로 저장하기 :: VBA 이용 (0) | 2024.07.15 |
---|---|
[Excel] 엑셀에서 시트명만 txt 파일로 추출하기 :: VBA 사용 (2) | 2024.07.15 |
[Excel] 엑셀 시트에서 N시간 더하는 수식 (0) | 2024.03.03 |
csv 파일 깨질 때의 대처법 (0) | 2024.02.29 |
[Excel] 필터 선택해야 하는 항목이 너무 많을 때 :: IF로 y/n 생성 후 한번 더 필터 (0) | 2023.11.29 |
댓글