여러 사람이 보낸 CSV를 한 표로 모으려면, 열 이름부터 맞추고 중복은 나중에 확인해 주세요. 같은 위치의 열이라도 한 파일은 주문번호, 다른 파일은 금액일 수 있어요.
이렇게 파일을 모으는 일을 ‘취합’, 빠지거나 잘못 들어간 값이 없는지 확인하는 일을 ‘검수’라고 해요. 작은 예제 두 개로 어떤 순서로 확인하면 되는지 살펴볼게요.
원본은 따로 두고 시작해요
받은 파일은 보관하고 복사본으로 작업해 주세요. 폴더를 이렇게 나누면 어디까지 작업했는지 구분하기 좋아요.
월말취합/
01_받은원본/
02_작업복사본/
03_검수결과/
파일 이름과 보낸 사람, 받은 날짜, 자료가 해당하는 기간도 적어두세요. 수정본을 다시 받았다면 두 파일을 모두 더하기 전에 어느 쪽을 반영할지 먼저 정해야 해요.
‘최종2’처럼 파일명만 바뀐 경우에는 보낸 사람에게 확인해 주세요. 이름만 보고 어느 파일이 맞는지 결정하지 않는 게 좋아요.
두 파일의 열 순서가 다르면 어떻게 될까요?
아래는 실제 주문이 아닌 연습 자료예요. 두 파일을 내려받아서 본문과 비교해 봐도 돼요. 수식이나 매크로, 외부 연결은 넣지 않았어요.
A 지점은 주문번호 → 상품 → 금액 순서예요.
| 주문번호 | 상품 | 금액 |
|---|---|---|
| A001 | 공책 | 3000 |
| A002 | 연필 | 1000 |
B 지점은 금액이 맨 앞에 있어요.
| 금액 | 주문번호 | 상품 |
|---|---|---|
| 3000 | A001 | 공책 |
| 1500 | A002 | 연필 |
| 5000 | A003 | 파일철 |
B의 첫 열을 A의 첫 열 밑에 그대로 붙이면 주문번호 칸에 금액이 들어가겠죠. 주문번호는 주문번호끼리, 금액은 금액끼리 맞춰서 합쳐야 해요.
이름만 같다고 끝난 건 아니에요. A의 금액은 세금 포함, B는 세금 제외라면 먼저 같은 기준으로 맞춰야 해요. 원 단위인지 천 원 단위인지도 함께 확인해 주세요.
열마다 확인할 것은 조금씩 달라요
| 열 | 확인할 내용 |
|---|---|
| 주문번호 | 빈칸은 없는지, 앞자리 0이 남았는지, 다른 지점에서도 같은 번호를 쓰는지 |
| 상품 | 이름만 다르게 적힌 같은 상품이 있는지 |
| 금액 | 단위와 세금 기준, 빈칸, 환불을 뜻하는 음수, 쉼표·원 기호 |
| 출처 파일 | 어느 파일에서 온 행인지 남겨두기 |
주문번호는 계산하는 숫자가 아니라 대상을 구분하는 값이니 텍스트로 다루세요. 금액을 원 단위 정수로 정했다면 모든 파일에 같은 기준을 적용하면 돼요.
열 이름 끝에 공백이 붙은 금액 을 금액으로 고칠 수도 있어요. 다만 고치고 나서 같은 이름의 열이 두 개가 되면 멈추고 확인해 주세요.
빈 금액도 무조건 0으로 채우면 안 돼요. ‘매출이 0원’과 ‘아직 입력하지 않음’은 다른 뜻이니까요.
같은 주문번호라도 바로 지우면 안 돼요
예제에서 A001 / 공책 / 3000은 내용이 똑같은 행이 두 번 있어요. 반면 A002는 주문번호는 같은데 금액이 1000과 1500으로 달라요.
첫 번째는 같은 자료를 두 번 받았는지 확인할 대상이에요. 두 번째는 어느 금액이 맞는지 물어봐야 하는 대상이고요. 한꺼번에 중복 제거를 누르면 필요한 수정 내역까지 사라질 수 있어요.
- 내용이 모두 같으면: 중복 전달이 맞는지 확인한 뒤 정한 규칙에 따라 반영해요.
- 주문번호만 같고 금액이 다르면: 두 행과 출처 파일을 남겨 담당자에게 확인해요.
- 지점 안에서만 주문번호가 고유하면: ‘지점+주문번호’를 함께 비교할지 정해요.
- 취소·재주문·분할 결제라면: 업무에서 어떻게 기록하는지 확인하기 전에는 지우지 마세요.
‘맨 마지막 행을 남기기’도 항상 맞는 방법은 아니에요. 파일 순서가 실제 수정 순서라는 근거가 있을 때만 쓸 수 있어요.
연습 파일을 합쳤다면 이 숫자와 비교해요
두 파일은 UTF-8 BOM 형식이에요. 열 이름에 맞춰 읽으면 데이터는 5행, 금액 합계는 13,500이에요.
| 확인할 값 | 기대값 |
|---|---|
| A의 데이터 행 | 2 |
| B의 데이터 행 | 3 |
| 그대로 합친 데이터 행 | 5 |
| 그대로 합친 금액 | 13,500 |
| 업무 값 세 개가 모두 같은 행을 하나씩만 셌을 때 | 4 |
| 서로 다른 주문번호 수 | 3 |
내용이 완전히 같은 행 하나를 제외하면 4행·10,500이 돼요. 그래도 A002의 1000과 1500 중 무엇이 맞는지는 아직 몰라요. 이 상태의 합계를 최종 금액으로 확정하지 말고 확인 대기로 남겨주세요.
이 숫자는 어떻게 확인했나요?
직접 만든 연습 CSV를 Python 3.12.14의 DictReader로 읽어 확인했어요. 실제 회사 자료나 Excel·Power Query 화면에서 시험한 결과는 아니에요. 검증 결과와 파일 해시 보기
이 예제는 열 순서와 중복 차이를 살펴보는 자료예요. 특정 취합 서비스에서 같은 결과가 자동으로 나온다고 보장하지는 않아요.
끝내기 전에 행 수와 합계를 같이 봐주세요
행 수는 맞는데 금액이 틀릴 수도 있고, 서로 다른 오류가 우연히 상쇄돼 합계만 맞을 수도 있어요. 두 가지를 함께 확인하는 게 좋아요.
입력한 행 수가 정상 반영 + 확인 대기 + 제외한 행 수와 맞는지 확인해 주세요. 통합표와 함께 아래 메모를 남기면 빠진 행을 찾을 때 도움이 돼요.
대상 기간:
반영한 원본 파일:
제외한 수정 전 파일과 이유:
입력한 데이터 행 수:
정상 반영 / 확인 대기 / 제외 행 수:
파일별 금액 합계:
통합 후 금액 합계:
차이가 난 이유와 확인한 사람:
빈 주문번호 / 빠진 열 / 형식 오류 개수:
쉼표와 수식도 놓치지 마세요
메모 안에는 쉼표나 줄바꿈이 들어갈 수 있어요. 파일을 단순히 쉼표나 줄 단위로 잘라서 읽으면 열이나 행 수가 달라질 수 있으니, CSV를 읽는 가져오기 기능이나 전용 파서를 사용해 주세요.
파서는 파일 형식을 이해해서 읽는 도구예요. Python이라면 csv 모듈의 reader·DictReader를 쓸 수 있고, 공식 문서는 파일을 열 때 newline=''을 사용하도록 안내해요. Python CSV 문서
외부에서 받은 값이 엑셀에서 수식으로 해석되는 문제도 있어요. =, +, -, @ 등으로 시작하는 값은 검토 대상으로 표시하되, 정상적인 음수나 전화번호일 수도 있으니 원본에서 일괄 삭제하지 마세요.
출처를 모르는 파일은 바로 더블클릭하지 말고 텍스트나 파서로 확인하는 과정부터 거쳐주세요. 보안 경고나 외부 연결을 무심코 허용하지 말고요. 따옴표로 감쌌다고 모든 프로그램과 재저장 상황에서 안전해지는 것도 아니에요. OWASP CSV 수식 주입 안내
한글부터 깨진다면 CSV 한글을 제대로 가져오는 방법을 먼저 확인해 주세요. 잘못 읽은 내용을 합치면 어느 파일에서 문제가 시작됐는지 찾기 더 어려워져요.
매달 하는 일이라면, 검사부터 자동화해요
파일 목록 기록, 필요한 열 확인, 열 이름 맞추기, 형식 오류 표시, 중복 후보 찾기, 행 수와 합계 비교는 자동화하기 좋은 작업이에요.
다만 충돌한 금액 중 어느 것이 맞는지, 어떤 수정본을 쓸지, 중복을 지워도 되는지는 담당자나 정해진 업무 규칙이 결정해야 해요. 처음부터 모두 자동으로 고치기보다, 이상한 행을 출처와 함께 보여주고 확인된 것만 반영하는 방식으로 시작해 보세요.
연습 파일에서 기대한 값이 나오는지 확인한 뒤, 실제 자료의 복사본으로 넓히면 돼요.
2026년 11월 2일 자료와 연습 파일을 확인했어요. AI의 도움으로 작성했으며, 본문 수치는 실제 매출이나 프로그램 성능을 나타내지 않아요.