열 합계를 구하는 일은 CSV로 가장 흔히 하는 작업이고, 답은 대개 파일을 연 프로그램에서 한 번의 클릭이면 나옵니다. 문제는 틀린 합계가 맞는 합계와 똑같이 보인다는 점입니다. 통화 기호, 내보내기 과정에서 맨 아래에 붙은 합계 행, 수백 줄의 중복만 있어도 합계는 어긋나지만, 화면에는 그걸 알려 주는 것이 아무것도 없습니다.
빠른 답
- Excel 또는 Sheets: 열을 선택합니다. 합계는 아래쪽 상태 표시줄에 나옵니다.
- 카테고리별: 피벗 테이블 또는
SUMIF를 씁니다. - 명령줄:
csvstat,mlr, 또는 DuckDB 쿼리 한 줄. 아래에서 설명합니다. - 휴대폰: 선택 영역 통계를 보여 주는 CSV 앱에서 열을 선택합니다.
- 매번: 숫자의 개수와 비어 있지 않은 셀의 개수를 비교합니다. 다르면 더해지지 않은 값이 있다는 뜻입니다.
한 번의 클릭으로 합계
Excel에서는 열 문자를 클릭합니다. 아래쪽 상태 표시줄에 평균, 개수, 합계가 표시됩니다. 상태 표시줄을 마우스 오른쪽 버튼으로 클릭하면 최소값, 최대값, 숫자 셀 개수를 추가할 수 있습니다.
Google Sheets에서는 열을 선택하면 오른쪽 아래에 합계가 나타납니다. 클릭하면 평균, 개수, 최소, 최대로 바꿀 수 있습니다.
대부분의 오류를 잡아내는 확인법: 개수(비어 있지 않은 셀)와 숫자 셀 개수를 비교합니다. 금액이 5,000개인 열이라면 둘 다 5,000이어야 합니다. 숫자 셀 개수가 4,870이라면 130개 셀은 텍스트이고, 합계에서 빠져 있는 것입니다.
수식으로
=SUM(D:D)
=SUMIF(B:B, "Travel", D:D)
=SUMIFS(D:D, B:B, "Travel", C:C, ">=2026-01-01")
SUMIF는 다른 열이 조건에 맞는 행만 합산합니다. SUMIFS는 조건을 원하는 만큼 받습니다.
카테고리별 합계
'카테고리별 총지출'은 카테고리마다 수식을 쓰는 것이 아니라 피벗 테이블로 구합니다.
- Excel: 삽입 → 피벗 테이블에서 카테고리를 행으로, 금액을 값으로 끕니다. 기본값은 합계입니다. 개수로 나온다면 그 열은 텍스트입니다(아래 참고).
- Sheets: 삽입 → 피벗 테이블, 방식은 같습니다.
명령줄에서
csvkit은 모든 열 또는 한 열을 요약합니다.
csvstat -c amount expenses.csv
Miller로 카테고리별로 묶어 합계를 구합니다.
mlr --icsv --opprint stats1 -a sum,mean,count -f amount -g category expenses.csv
DuckDB는 어떤 크기의 파일이든, 어떤 질문이든 처리합니다.
duckdb -c "SELECT category, sum(amount) AS total, count(*) AS rows FROM 'expenses.csv' GROUP BY ALL ORDER BY total DESC"
awk -F,는 쓰지 마세요. Stack Overflow 답변마다 권하지만, 이 방법은 모든 쉼표에서 나눕니다. "Smith, Jane"처럼 따옴표로 묶인 필드 안의 쉼표도 마찬가지여서, 아무 경고 없이 엉뚱한 열을 더합니다.
합계가 틀리는 이유
아래 경우는 모두 그럴듯한 숫자를 만들어 냅니다.
숫자가 아닌 값
- 통화 기호:
$1,200.00. 많은 도구가 텍스트로 취급하고 건너뜁니다. - 천 단위 구분 기호: CSV의
1,200은 따옴표로 묶인 텍스트인 경우가 많습니다. - 소수점 쉼표: 유럽 시스템에서 나온
1.200,50은 독일어 사용자에게는 천이백이지만, 영어권 도구에서는 텍스트이거나 1.2입니다. - 회계식 음수:
(450.00)은 재무 내보내기에서는 −450을 뜻하지만, 다른 도구에서는 텍스트입니다. 대개 환불이라서 건너뛰면 합계가 실제보다 커집니다. - 자리 표시자:
N/A,-,TBC.
위의 개수 확인으로 이 모두를 잡을 수 있습니다. 가능하면 원본에서 고치고, 어렵다면 합산하기 전에 열을 정리하세요.
있으면 안 되는 행
- 합계 행. 은행이나 회계 내보내기는 "Total"이나 "Closing balance"로 끝나는 경우가 많습니다. 포함하면 합계가 두 배가 됩니다. 첫 합계를 믿기 전에 마지막 몇 줄을 확인하세요.
- 중복. 겹치는 내보내기를 이어 붙인 파일은 겹친 부분을 두 번 셉니다. CSV에서 중복 행을 제거하는 방법을 참고하세요.
- 반복된 헤더 행. 여러 CSV를 손으로 이어 붙이면 헤더 줄이 데이터 중간에 들어갑니다. 텍스트라서 건너뛰지만, 비교 대상인 행 수는 부풀립니다.
부호
출금을 음수, 입금을 양수로 쓰는 내보내기도 있고, 둘을 별도 열로 나누는 것도 있으며, 양수 금액에 "차변/대변" 열을 따로 두는 것도 있습니다. 세 번째 유형에서 금액 열을 합산하면 잔액이 아니라 총 거래액이 나옵니다. 은행 거래 내역 CSV 가이드에서 흔한 형식을 살펴봅니다.
Excel이 먼저 값을 바꿨다
열이 금액이 아니라 긴 ID나 코드였다면, 더블클릭으로 열 때 이미 반올림되었을 수 있습니다. 합계보다 조회에 더 큰 문제지만 원인은 같습니다. Excel은 CSV 데이터를 바꿉니다. 파일을 여는 순간에 일어납니다.
휴대폰에서
휴대폰의 스프레드시트 앱도 선택 영역의 합계를 보여 주지만, CSV를 변환한 뒤에야 가능합니다. CSV 앱은 파일에서 바로 계산할 수 있습니다.
Smart CSV Viewer에서는 열 이름을 탭해 선택한 다음, 아래쪽 바 위의 요약 줄을 탭하면 Selection stats가 열립니다. 크기, 채워진 셀과 빈 셀, 숫자의 경우 개수, 합계, 평균, 최소, 최대가 나옵니다. 1,234.50, $5, 1.234,50처럼 쓴 값도 모두 계산됩니다. 숫자를 탭하면 복사됩니다.

Numbers 줄과 Non-empty 줄을 비교하는 것이 앞에서 말한 개수 확인이며, 이미 내장되어 있습니다. 먼저 필터를 걸면 통계가 일치하는 행에만 적용되므로, 피벗 테이블 없이 카테고리별 합계를 얻을 수 있습니다.
iPhone이나 Android에서 열을 선택하면 개수, 합계, 평균, 최소, 최대를 보여 줍니다. 통화 기호와 두 가지 소수 표기를 인식하고, 먼저 필터를 걸면 소계도 구할 수 있습니다.
기능30초 점검
합계를 이메일에 쓰기 전에 확인하세요.
- 개수와 숫자의 수. 비어 있지 않은 모든 셀이 숫자로 계산되었는가.
- 마지막 다섯 행. 합계, 잔액, 바닥글 행이 없는가.
- 가장 큰 값. 내림차순으로 정렬해 맨 위를 봅니다. 소수점 하나가 잘못 놓여 합계가 100배 틀리는 것이 가장 흔한 실수입니다.