엑셀 -- 기호 (논리값을 숫자로 바꾸는 기호)
빼기를 두 번 연달아 쓰면 TRUE는 1, FALSE는 0으로 바뀝니다. 논리값을 그대로 두는 SUMPRODUCT 함수에서 조건을 셀 때 필요합니다.
수식에서 -- 를 만나면 오타처럼 보이지만, 이것은 TRUE·FALSE 를 1·0 으로 바꾸는 기호입니다. 특히 SUMPRODUCT 로 조건별 합계를 구할 때 빠지지 않고 등장합니다.
왜 필요한가요
엑셀은 논리값이 계산에 쓰이면 알아서 숫자로 바꿔 줍니다.
= TRUE * 1 '// 1 * 1 = 1 = SUM(TRUE, FALSE, TRUE) '// 1 + 0 + 1 = 2
그런데 SUMPRODUCT 함수는 논리값을 숫자로 바꾸지 않고 그대로 받습니다. 그래서 조건식의 결과를 직접 숫자로 만들어 줘야 합니다.

-- 없이도 계산됩니다. 다만 이전 버전과 파일을 주고받는다면 붙여 두는 편이 안전합니다.어떻게 동작하나요
빼기를 두 번 하면 부호가 두 번 뒤집혀 원래 값으로 돌아옵니다. 그 과정에서 사칙연산이 일어나므로 논리값이 숫자로 바뀝니다.
= --("사과" = "사과")
= --(TRUE)
= -(-1)
= 1
SUMPRODUCT 에서의 계산 순서
아래 표에서 2월에 해당하는 값만 더하는 수식을 예로 들어 보겠습니다.
=SUMPRODUCT(--(MONTH(A1:A5)=2)*B1:B5)
| 행 | A (날짜) | B (값) |
|---|---|---|
| 1 | 2020-01-20 | 5 |
| 2 | 2020-02-03 | 10 |
| 3 | 2020-02-28 | 7 |
| 4 | 2020-03-01 | 12 |
| 5 | 2020-04-02 | 17 |
수식은 다음 순서로 계산됩니다.
=SUMPRODUCT(--(MONTH(A1:A5)=2) * B1:B5)
=SUMPRODUCT(--({1,2,2,3,4}=2) * {5,10,7,12,17})
=SUMPRODUCT(--{FALSE,TRUE,TRUE,FALSE,FALSE} * {5,10,7,12,17})
=SUMPRODUCT({0,1,1,0,0} * {5,10,7,12,17})
=(0*5) + (1*10) + (1*7) + (0*12) + (0*17)
=17
조건에 맞는 행만 1이 되고 나머지는 0이 되므로, 곱한 뒤 더하면 조건에 맞는 값의 합계가 남습니다.
참고 문서
- SUMIF 함수 고급 사용법 — SUMPRODUCT 응용 — 오빠두엑셀 영상 강의
- Excel의 계산 연산자 및 우선 순위 — Microsoft 지원
감사합니다.