피벗 테이블 합계가 안 맞을 때: 숫자·빈칸·원본 범위·새로 고침 확인하기
지출 원본을 더하면 21,000원인데 피벗 결과가 다르다면, 피벗 결과를 직접 고치기 전에 집계 방식→원본 값→포함 범위→갱신 상태 순서로 확인하세요. CSV 도우미는 원문 구조를 점검하는 보조 도구이며 Excel 피벗의 실제 설정을 읽지는 못합니다.
원인
금액을 더하는 합계와 값이 있는 셀을 세는 개수는 다릅니다. Excel이 금액을 문자로 해석하면 기본 집계가 개수로 잡힐 수 있습니다. 빈 값이나 원본 범위 밖의 새 행, 필터, 아직 반영되지 않은 원본 수정도 집계 차이의 원인입니다. Microsoft 집계 기준
재현: 손으로 확인할 수 있는 원본
합성 지출 CSV를 사용합니다. 머리글 4개와 데이터 6개이며 실제 고객 자료는 아닙니다.
record_id,팀,항목,금액
S001,영업,교통,4000
S002,영업,소모품,6000
S003,영업,교통,2000
S004,운영,교통,3000
S005,운영,소모품,5000
S006,운영,교통,1000
값을 정수 금액으로 읽어 더하면 전체 21,000원, 영업 12,000원·운영 9,000원입니다. 파일과 같은 폴더에서 다음 Python 코드를 실행할 수 있습니다.
import csv
with open('guide-07-expenses.csv', encoding='utf-8-sig', newline='') as f:
rows = list(csv.DictReader(f, strict=True))
print(len(rows), sum(int(r['금액']) for r in rows))
print(type(rows[0]['금액']).__name__)
출력은 6 21000, str입니다. 기본 CSV reader는 필드를 문자열로 읽고, 이 코드에서 int()로 명시적으로 바꿔 합산했습니다. **CSV에서 str이 나왔다고 Excel의 실제 셀도 문자형이라는 뜻은 아닙니다.** Python csv
해결 1: 합계인가 개수인가, 실제 숫자형인가
Excel의 피벗 값 영역에서 금액 필드의 요약 기준을 확인합니다. 원본 6건의 금액 개수는 6이고, 금액 합계는 21,000입니다. 두 수치는 다른 질문의 답입니다. 합계가 필요한 보고서라면 원본 금액이 실제 숫자인지 확인하고 합계 기준을 선택합니다.
문자형 숫자와 실제 숫자는 Excel에서 직접 확인해야 합니다. 셀에 6000이 보이거나 CSV에서 따옴표로 감쌌다는 사실만으로 실제 자료형을 확정하지 마세요. 표시 형식만 숫자로 바꿔도 기존 값의 자료형까지 변환됐다고 가정할 수는 없습니다. 사본에서 대상 Excel의 실제 변환 결과와 원문을 대조합니다.
CSV 도우미는 Excel 셀의 자료형·피벗 필드의 합계/개수 설정을 판정하지 않습니다. 금액에 단위나 천 단위 구분 문자가 들어 있다면 업무 규칙을 확인하고 처리해야 하며, 모든 비숫자 문자를 무조건 삭제하지 않습니다.
해결 2: 빈 금액과 열 누락을 구분하기
빈 금액 예제는 S002의 6000만 빈 문자열로 바꾼 비교용 파일입니다. 데이터는 여전히 6건·4열이지만 금액이 채워진 건 5개이며 확인된 금액만 더하면 15,000원입니다.
with open('guide-07-blank-amount.csv', encoding='utf-8-sig', newline='') as f:
blank_rows = list(csv.DictReader(f, strict=True))
known = [int(r['금액']) for r in blank_rows if r['금액'] != '']
print(len(blank_rows), len(known), sum(known))
출력은 6 5 15000입니다. 빈 금액을 0원으로 확정한 것이 아닙니다. 누락된 금액을 자료 담당자에게 확인하기 전에는 보고서 전체 금액이 확정됐다고 말하지 않습니다.
열 누락 예제는 마지막 레코드가 3열뿐인 별도 오류 예제입니다. 빈 금액이 들어 있는 4열과 금액 필드 자체가 없는 3열은 다른 상태입니다.
CSV 도우미의 CSV 검사기에서 파일을 선택하고 인코딩·구분자 판별 결과, 데이터 레코드 수와 열 개수·미리보기를 확인합니다. 이 예제에서 열 누락은 열 수 차이로 확인할 수 있습니다. 반면 현재 검사기는 모든 빈 셀을 자동으로 경고하거나 금액 열의 누락을 업무 오류로 판정하지 않습니다. 빈 문자열은 미리보기·원문·위 재현 코드로 함께 확인합니다. ‘문제 없음’이 금액 완전성의 보증은 아닙니다.
빈 레코드, 빈 필드, 피벗 화면의 빈 표시도 서로 다를 수 있습니다. 실제 피벗이 빈 값·문자를 어떻게 집계했는지는 원본 유형과 선택한 집계 방식에 맞춰 Excel에서 검수합니다.
해결 3: 새 행이 원본 범위에 포함됐는지
7건 확장 예제는 기존 6건 뒤에 운영·소모품 2,500원 한 건을 추가했습니다. 전체 합계는 23,500원입니다. 첫 6건만 읽으면 여전히 21,000원이라 2,500원 차이가 납니다.
with open('guide-07-expanded.csv', encoding='utf-8-sig', newline='') as f:
expanded = list(csv.DictReader(f, strict=True))
print(len(expanded), sum(int(r['금액']) for r in expanded))
print(sum(int(r['금액']) for r in expanded[:6]))
출력은 7 23500, 21000입니다. 이것은 범위가 빠졌을 때의 산술 차이를 보인 것으로 실제 Excel 피벗의 범위를 읽은 결과가 아닙니다.
Excel에서 피벗의 원본이 고정 셀 범위인지 Excel 표인지 확인하고 추가한 행까지 포함됐는지 봅니다. Excel 표는 새 행을 포함해 갱신하는 원본으로 사용할 수 있지만, 표 밖에 잘못 추가한 행이나 잘못된 원본 선택까지 자동 해결한다고 가정하지 마세요. CSV 검사기는 이 파일이 7건임은 확인해도 피벗이 그중 6건만 참조하는지는 알 수 없습니다. Microsoft 피벗 원본 안내
해결 4: 원본 수정 뒤 현재 갱신 상태 확인하기
원본 사본에서 S001 금액을 4000→4500으로 바꾸면 전체 기대 합계는 21,500원입니다. 피벗에서 기존 21,000원을 보고 있다면 원본 연결·범위·필터와 새로 고침 결과를 확인합니다. 갱신 여부는 Excel에서 확인해야 하며 CSV 도우미가 피벗 캐시를 검사하는 것은 아닙니다.
일부 Excel 버전·설정은 자동 갱신을 지원합니다. 수정 뒤 이미 21,500원이 됐다면 정상 동작입니다. 모든 피벗이 반드시 수동으로만 갱신된다고 안내하지 않습니다. Microsoft 새로 고침 안내
원본을 고친 뒤 최종 합계가 의도한 값인지 대조하는 것이 목적입니다. 새로 고침 버튼을 눌렀다는 사실만으로 누락 범위나 문자형 금액까지 해결됐다고 판단하지 않습니다.
확인할 수 있는 범위
CSV 도우미·원문에서: 파일의 데이터 레코드·열 개수, 열 누락 경고, 미리보기의 원문 값. 빈 셀은 자동 전수 경고가 아니므로 별도 값 대조가 필요합니다.
Excel에서: 실제 셀의 문자/숫자형, 합계/개수 등의 집계 기준, 원본 연결과 범위, 필터·슬라이서, 자동/수동 갱신 상태 및 최종 피벗 결과. CSV를 새로 읽은 상태와 이미 열린 통합문서의 상태를 같다고 보지 않습니다.
한계
이 글은 합성 CSV의 파싱·빈 값·열 개수와 Python 정수 합산을 검증했습니다. 실제 Excel 피벗 생성·자료형 변환·빈 값 집계·원본 범위·캐시 갱신을 실행한 검증은 아닙니다. Excel 화면과 동작은 대상 Excel에서 별도로 확인해야 합니다.
평균·계산 필드·데이터 모델·중복 집계·반품 음수·반올림·통화 변환은 별도 규칙입니다. 모든 합계 불일치를 이 네 원인으로 확정하지 마세요. 합성 원본은 그대로 두고 비교용 파일을 사용합니다.
검토일: 2026-10-18. 본문 Python 코드와 합성 예제의 21,000/15,000/23,500/21,500원 기대값, 빈 금액과 열 누락, 원본 보존·사이트 CSV 라이브러리 결과를 대조했습니다. Excel GUI·브라우저 UI는 실행하지 않았습니다.
AI 보조 작성: AI로 초안과 합성 예제를 작성하고 로컬 실행 결과·공식 문서를 확인했습니다. 실제 고객 자료는 사용하지 않았습니다.