- 최초 작성일: 2000-03-04
- 최종 수정일: 2026-09-29
- 조회수: 37 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 날짜 조건으로 합계 구하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
질문 하나
…(중략)… 저혼자 아무리 해봐도 모르겠네요. 책을 봐도 물론 없구요.
sumif 함수에서 문자필드를 검색할 때에는, 예를 들어 성이 "김"씨인 사람을 검색할려면
"김*"과 같이 지정해주면 되는데…
날짜필드를 검색할 때에는 어떻게 해야 하는지 모르겠군요. 날짜필드 중에서 1월에
해당하는 값만 sumif 함수를 써서 더하고자 하는 경우에는 어떻게 해야 할까요?
저좀 도와 주십시오(어라? 질문에 답해 달랬더니 뭘 도와달라는 것이여~~).
날짜 조건으로 합계 구하기
핵심 요약
- TEXT 함수로 날짜를 연/월 문자열로 바꾸면 특정 월인지 비교할 수 있습니다.
- 조건 비교 결과 TRUE와 FALSE는 배열 계산에서 1과 0처럼 사용되어 합계 대상 값을 걸러냅니다.
- SUM과 조건 배열을 곱한 배열수식으로 원하는 월의 금액만 합계할 수 있습니다.
어떠한 질문이라도 괜찮고 어느 시간대에 질문하셔도 상관이 없습니다.
단 한가지, 질문을 하실 때 가급적이면 상세하게, 그리고 기밀을 요하는 사항이 아니라면 실제 파일도 함께 보내주시면 좋겠습니다. 그래야 예제파일 만드느라 소비할 시간을 아껴서 새로운 걸 하나라도 더 소개해 드릴 수 있을 테니까요.
위 질문하신 분도 실제 파일을 안보내 주셨으니 우선 예제 파일을 하나 만들고… (에구 힘듬!)
참고: 원문의 이 표는 워크시트 화면을 옮긴 것으로, 표 오른쪽 칸에 들어 있던 설명 문장과 1월~3월 합계 결과는 표 아래로 옮겼습니다. 그에 맞추어 "왼쪽과 같은"은 "위와 같은"으로 바꾸었습니다. 표의 값으로 직접 더해 보아도 합계는 같습니다.
| 28 | B | C | D |
| 29 | 월 | 브랜드 | 판매금액 |
| 30 | 00/1 | 미로 | 198,000 |
| 31 | 00/2 | 아이오페 | 210,000 |
| 32 | 00/1 | 아이오페 | 210,000 |
| 33 | 00/3 | 미로 | 237,600 |
| 34 | 00/2 | 아이오페 | 262,500 |
| 35 | 00/1 | 아이오페 | 297,500 |
| 36 | 00/1 | 아이오페 | 367,500 |
| 37 | 00/2 | 미로 | 415,800 |
| 38 | 00/1 | 미로 | 415,800 |
| 39 | 00/2 | 마몽드 | 436,600 |
| 40 | 00/1 | 마몽드 | 466,200 |
| 41 | 00/1 | 라네즈 | 473,200 |
| 42 | 00/1 | 미로 | 475,200 |
| 43 | 00/1 | 미로 | 495,000 |
| 44 | 00/2 | 미로 | 501,600 |
| 45 | 00/1 | 아이오페 | 507,500 |
| 46 | 00/3 | 아이오페 | 542,500 |
| 47 | 00/1 | 미로 | 574,200 |
| 48 | 00/2 | 미로 | 620,400 |
| 49 | 00/2 | 미로 | 627,000 |
위와 같은 소스파일을 가지고서 아래와 같은 결과를 얻고싶다 이런 질문이시지요?
| 1월 합계 | 4,480,100 |
| 2월 합계 | 3,073,900 |
| 3월 합계 | 780,100 |
1월 합계 부분의 셀에는 이런 공식이 들어 있습니다.
{=SUM((TEXT(B30:B49,"yy/mm")="00/1")*D30:D49)}
참고: TEXT 함수의 서식 코드 yy/mm은 1월을 00/01처럼 월을 두 자리로 표시합니다. 그러므로 비교값을 "00/1"로 쓰려면 서식 코드를 "yy/m"으로, 서식 코드를 "yy/mm"으로 두려면 비교값을 "00/01"로 써야 두 값이 일치합니다.
① 일단 중괄호({})로 둘러져 있으니 배열수식을 사용한 것이고… ② 수식이 길면 안쪽부터 분해해서 보라고 힌트를 드렸지요. 수식이 입력된 요 셀로 셀포인터를 옮기고 <F2>키를 누른후 수식입력바로 가서 TEXT(B30:B49,"yy/mm")="00/1") 부분을 범위로 잡고 <F9>키(→아주 오래 전에 설명드린 즉석 계산 기능이지요)를 누르면 아래와 같은 얄궂은 화면이 나타납니다.
이게 대체 먼 소릴까?
TEXT(B30:B49,"yy/mm")="00/1") 부분은 "B30,B31,B32,…B49 셀 중에서 년월이 "00/1"인 것을 지정하는 것입니다. 즉 B30셀은 1월이 맞으니까 TRUE이고 B31은 2월이니까 FALSE, B32셀은 1월이니까 TRUE… 이렇게 B49까지 모두 검사해서 TRUE, FALSE 여부를 일일이 따지는 것이지요.
참 친절하게 설명 잘한다!! Exceller는 처음 이것을 이해하는데 일주일 걸렸습니다. 아마 어떤 책을 사서 보시더라도 이렇게 상세히 설명해 놓은 경우는 찾기가 쉽지 않을 것입니다.
③ 그 다음에 "D30:D49" 부분을 선택하고 마찬가지로 <F9>키를 눌러 보세요.
이상한 숫자가 뜨는데... 자세히 살펴보니 바로 D30 ~ D49 각각의 셀에 들어있는 자료값이지요? 여기서 중요한 사실 한 가지! 사실 위에서 장황하게 설명한 것 다 몰라도 이것 한가지만 건지면 오늘 본전은 뽑은 것입니다.
컴퓨터는 모든 자료를 0과 1의 조합, 즉 디지털 신호화해서 받아들인다는 것은 다들 아시는 사항일테고, 모든 소프트웨어(하드웨어도 마찬가지)에서 0은 False를, 1은 True를 나타냅니다.
④ 이상을 요약해 보면,
| 28 | B | C | D |
| 29 | 월 | 브랜드 | 판매금액 |
| 30 | 00/1 | 미로 | 198,000 |
| 31 | 00/2 | 아이오페 | 210,000 |
| 32 | 00/1 | 아이오페 | 210,000 |
| 33 | 00/3 | 미로 | 237,600 |
| 34 | 00/2 | 아이오페 | 262,500 |
| 35 | 00/1 | 아이오페 | 297,500 |
| . . . | . . . | . . . | |
| 49 | 00/2 | 미로 | 627,000 |
B30셀은 1월 이니까 TRUE, 즉 1, 1에다 198000을 곱하면 198000
B31셀은 2월 이니까 FALSE, 즉 0, 0에다 210000을 곱하면 0
B32셀은 1월 이니까 TRUE, 즉 1, 1에다 210000을 곱하면 210000
B33셀은 3월 이니까 FALSE, 즉 0, 0에다 237600을 곱하면 0
B34셀은 2월 이니까 FALSE, 즉 0, 0에다 262500을 곱하면 0
B35셀은 1월 이니까 TRUE, 즉 1, 1에다 297500을 곱하면 297500
……………………………………………………………………
B49셀은 2월 이니까 FALSE, 즉 0, 0에다 627000을 곱하면 0
⑤ 이렇게 일련의 과정을 통해 월이 "1월"인 것만 더하라는 명령어가
{=SUM((TEXT(B30:B49,"yy/mm")="00/1")*D30:D49)}
인 것입니다.
2월, 3월의 합계를 구하려면 요 부분을 "00/2", "00/3"으로 고쳐주면 되겠지요? 분량이 좀 많지만 몇번만 들여다 보면 감이 팍~~ 올 것입니다.
다음에 또…
정리 — 날짜 조건으로 합계 구하기
| 구분 | 내용 |
|---|---|
| 문제 | 날짜 필드에서 특정 월에 해당하는 값만 합계 |
| 수식 | {=SUM((TEXT(B30:B49,"yy/mm")="00/1")*D30:D49)} |
| 조건 부분 | TEXT 함수로 날짜를 연/월 문자열로 바꿔 특정 월과 비교하여 TRUE/FALSE 배열 생성 |
| 계산 원리 | TRUE는 1, FALSE는 0이므로 금액 배열과 곱하면 해당 월의 금액만 남음 |
| 다른 월 | 비교값을 00/2, 00/3으로 변경 |
| 예제 결과 | 1월 4,480,100 / 2월 3,073,900 / 3월 780,100 |
자주 묻는 질문 (FAQ)
Q1. 날짜 필드에서 특정 월의 합계는 어떻게 구하나요?
TEXT 함수로 날짜를 연/월 형태의 문자열로 바꿔 원하는 월과 비교하고, 그 결과에 금액 범위를 곱해 SUM 함수로 더하는 배열수식을 사용합니다.
Q2. TRUE와 FALSE에 금액을 곱하는 이유는 무엇인가요?
컴퓨터는 TRUE를 1, FALSE를 0으로 받아들이므로 곱하면 조건에 맞는 금액만 남고 나머지는 0이 됩니다.
Q3. 2월이나 3월의 합계는 어떻게 구하나요?
비교하는 값을 각각 00/2, 00/3으로 고쳐 주면 됩니다.
마치며
조건에 맞는 값만 남기는 원리를 이해하면 월별뿐 아니라 다양한 조건의 합계에도 응용할 수 있습니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.