
엑셀 여러 파일 합치기: 폴더에 넣고 “자동 병합”까지 끝내는 가장 확실한 방법
매달 쌓이는 월별 매출 파일, 지점별 재고 파일, 팀별 실적 파일… “복사해서 한 시트로 붙여넣기”를 반복하다 보면, 어느 순간부터 열이 어긋나고 헤더가 중복되고 숫자가 텍스트로 바뀌고 파일이 추가될 때마다 다시 해야 합니다. 이 글은 엑셀 여러 파일 합치기를 “한 번 세팅 → 이후에는 폴더에 파일만 추가 → 새로고침 한 번”으로 끝내는 Power Query(파워 쿼리) 표준 절차를 중심으로, 열(스키마) 불일치/한글 CSV 인코딩/성능 문제까지 실무 기준으로 정리합니다.
Quick Fix: 3분 만에 “엑셀 여러 파일 합치기”
1) 폴더 준비 규칙(가장 중요)
- 한 폴더에 ‘합칠 원본 파일만’ 넣기(임시파일/백업/다른 형식 섞이면 오류 확률↑)
- 가능하면 열 이름(헤더)과 열 개수(스키마)를 통일
- 원본 범위는 테이블(Ctrl+T)로 만들어 저장(시트 범위보다 구조 변화에 강함)
- 파일 이름 규칙(예: Sales_2025-01.xlsx)을 통일
내부 참고: Power Query — 가져오기·정리·병합·추가·자동 새로고침 완전 가이드
2) Power Query로 폴더 연결(From Folder)
- 영문 UI: Data → Get Data → From File → From Folder
- 한글 UI: 데이터 → 데이터 가져오기 → 파일에서 → 폴더에서
3) Combine & Transform → 로드
- 파일 목록 화면에서 Combine(결합) → Combine & Transform Data(결합 및 변환)
- Power Query 편집기에서 Close & Load(닫기 및 로드)로 테이블 로드
4) 파일 추가 후 새로고침
폴더에 새 파일을 넣고, 데이터 → 모두 새로 고침(Refresh All)만 누르면 반영됩니다.
왜 Power Query가 “여러 파일 병합”에 최적인가?
복사/붙여넣기 vs Power Query vs 수식(VSTACK) 비교
- 복사/붙여넣기: 당장 빠르지만 반복/휴먼에러/열 깨짐/유지보수 문제가 큼
- 수식(VSTACK 등): 파일 수가 적고 구조가 완벽히 같으면 깔끔하지만 폴더 자동 수집에는 한계
- Power Query: 폴더 단위 자동 결합 + 정리 규칙 저장 + 새로고침으로 운영에 최적
표/범위 병합 중심이라면: 엑셀 VSTACK·HSTACK·TOCOL·TOROW·TAKE·DROP — 표 합치기·재구성
“샘플 파일(Transform Sample File)”이 자동으로 만들어지는 원리
폴더 결합을 하면 Power Query가 대표 파일(샘플)에서 변환 규칙을 만들고, 그 규칙을 “함수”로 저장해 폴더 내 모든 파일에 적용한 뒤 하나의 테이블로 결합합니다.
실전 예제: 월별 매출 파일 12개를 한 테이블로 합치기
샘플 데이터(재현 가능)
| Date | Store | SKU | Qty | Amount |
|---|---|---|---|---|
| 2025-01-03 | Seoul | A001 | 2 | 40000 |
| 2025-01-05 | Busan | B120 | 1 | 15000 |
단계별 클릭 경로(Windows/Mac 공통)
- 새 통합문서 열기
- 데이터 → 데이터 가져오기 → 파일에서 → 폴더에서
- 폴더 선택 → 파일 목록 확인
- 결합(Combine) → 결합 및 변환(Combine & Transform Data)
- 열 이름/형식 확인
- 닫기 및 로드(Close & Load)
파일명(출처) 컬럼 추가하기
Power Query 편집기에서 파일 목록 단계의 Name(파일명) 컬럼을 최종 결과까지 유지하면, 행의 출처를 쉽게 추적할 수 있습니다.
열(스키마)이 다를 때도 합치는 방법(실무 핵심)
추가 열/누락 열이 섞인 경우
샘플 파일 스키마 기준으로 열이 고정되면서 일부 열이 사라질 수 있습니다. 최종 열 목록을 정해 강제로 맞추는 방식이 안전합니다.
let
Source = Excel.CurrentWorkbook(){[Name="Combined"]}[Content],
KeepCols = {"Date","Store","SKU","Qty","Amount","Channel"},
Fixed = Table.SelectColumns(Source, KeepCols, MissingField.UseNull)
in
Fixed
헤더 행 위치가 다른 경우
샘플 파일 변환 단계에서 “위쪽 행 제거(Remove Top Rows)” 후 “첫 행을 머리글로(Use First Row as Headers)”를 적용해 전체 파일에 동일하게 적용되도록 합니다.
Power Query 기본기 참고: 엑셀 Power Query 기본기 가이드
CSV 여러 개 병합 + 한글 깨짐(인코딩)까지 같이 잡기
CSV는 인코딩/구분자/형식 자동 추정 때문에 더 자주 깨집니다. 미리보기에서 파일 원본(인코딩)을 UTF-8 또는 한국어(949)로 바꿔 확인하고, 가능하면 UTF-8로 통일하세요.
관련 글: 엑셀 CSV 한글 깨짐 완전 해결
Power Query 없이도 합치는 3가지 대안
(1) VSTACK/HSTACK: 표가 몇 개 안 될 때
=VSTACK(TAKE(TblJan,1), DROP(TblJan,1), DROP(TblFeb,1), DROP(TblMar,1))
(2) VBA 매크로: 회사 표준일 때
Sub MergeFilesInFolder()
Dim folderPath As String, fileName As String
Dim wb As Workbook, ws As Worksheet
Dim master As Worksheet, nextRow As Long
folderPath = "C:\Data\Sales\"
Set master = ThisWorkbook.Worksheets("Master")
nextRow = master.Cells(master.Rows.Count, 1).End(xlUp).Row + 1
fileName = Dir(folderPath & "*.xlsx")
Do While fileName <> ""
Set wb = Workbooks.Open(folderPath & fileName)
Set ws = wb.Worksheets(1)
ws.UsedRange.Copy master.Cells(nextRow, 1)
nextRow = master.Cells(master.Rows.Count, 1).End(xlUp).Row + 1
wb.Close SaveChanges:=False
fileName = Dir
Loop
End Sub
(3) Python(pandas): 대량/배치 자동화
import glob
import pandas as pd
files = glob.glob(r"C:\Data\Sales\*.xlsx")
dfs = [pd.read_excel(f) for f in files]
out = pd.concat(dfs, ignore_index=True)
out.to_excel(r"C:\Data\Sales\merged.xlsx", index=False)
자동 새로고침 & 성능 최적화 체크리스트
- 쿼리 속성에서 “파일 열 때 새로 고침”, “매 X분 새로 고침” 설정
- 불필요 열은 초반에 제거(처리량 급감)
- 형식 변환은 한 번에 정리
- 폴더 잡파일 제거
Troubleshooting 표(증상 | 원인 | 해결법)
| 증상 | 원인 | 해결법 |
|---|---|---|
| 합쳤는데 어떤 열이 사라짐 | 샘플 파일 스키마 기준으로 열이 고정됨 | SelectColumns + MissingField.UseNull로 열 강제 유지 |
| 헤더가 데이터로 들어옴 | 파일마다 헤더 위치 다름 | 샘플 파일에서 위쪽 행 제거 후 첫 행을 머리글로 |
| 한글이 깨짐(CSV) | 인코딩 불일치 | 가져오기에서 UTF-8/한국어(949) 선택, 가능하면 UTF-8 통일 |
| 너무 느림 | 불필요 열/단계 과다/폴더 잡파일 | 열 조기 제거, 단계 단순화, 폴더 정리 |
합친 뒤 중복이 고민이면: 엑셀에서 중복 값을 제거하는 가장 쉬운 방법
맺음말
오늘 세팅한 “폴더 병합”은 한 번만 제대로 만들면, 다음 달부터는 파일을 폴더에 넣고 새로고침만 하면 끝입니다. 운영 자동화/성능까지 확장하려면 위의 관련 글도 같이 묶어 보세요.