본문 바로가기
Skill

1을 count 한 것은 1을 sum 한 것과 같다

by 어제 보다 나은 나 2023. 7. 30.
반응형

엑셀 수식에서 갯수를 세어야 할 때, SUM 함수를 사용하는 경우를 종종 봅니다.
쉽지만 평소에 잘 잊어버리는 노하우라고 할 수 있습니다.

 


1.  1과 0만 있다면, SUM 하라


범위에 1 또는 0 만 있는 경우에, 1의 개수를 세려면,

COUNTIF(범위, 1) 하면 됩니다. 


그런데, SUM(범위) 를 해도 같은 결과가 나옵니다.

이 사실은 매우 유용합니다.

값이 1과 0 뿐이라면, 1의 갯수는 1을 모두 더하기 한 것과 같습니다.

SUM()이 더 유용하다고 말하는 이유는,

1) SUM()이 COUNTIF()보다 단순하다는 점,
2) SUM()은 COUNTIF() 보다 훨씬 익숙하다는 점 때문입니다.


A열에 1이 3개 있다면, 
COUNTIF(범위, 1) = SUM(범위) 입니다.

 

COUNTIF(A1:A6, 1)  보다는 SUM(A1:A6) 이 훨씬 간단하고 쉽습니다.

 

 

2.  True 개수를 세는 방법

 

1을 더하는 경우도 많지만, TRUE 개수를 셀 때도 SUM 함수를 사용하면 편리합니다.


데이터 범위에 1과 0이 아니라, TRUE와 FALSE만 있을 때,
TRUE 개수를 세고 싶은 경우에 SUM 함수가 더 유용합니다.

그런데, SUM 함수만으로는 TRUE와 FALSE를 더할 수 없습니다.
TRUE/FALSE를 숫자로 변환하면 SUM 할 수 있습니다.
1과 0으로 변환해서 모두 더하면 1의 갯수가 됩니다.


TRUE는 1,  FALSE는 0에 대응됩니다.
TRUE와 FALSE가 어떤 경우에 1과 0으로 변환될까요?

1) "1을 곱하기" 하면 변환됩니다. 

2)  -- 연산자를 사용해도 변환됩니다.

 


2. TRUE/FALSE 값의 사칙연산( +, -, *, / )


TRUE와 FALSE에 사칙연산을 하는 경우에 엑셀이 어떻게 처리하는지 짚고 넘어갑시다.

TRUE + TRUE 를 하면 2를 return 합니다.
TRUE - TRUE 를 하면 0을 return 합니다.
TRUE * FALSE 를 하면 0을 return 합니다.
TRUE / FALSE 를 하면 에러가 납니다. 0으로 나누었기 때문입니다.

아래는,  TRUE와 FALSE에 사칙연산( +, -, *, /)을 실행한 결과를 보여줍니다.

TRUE/FALSE에 사칙연산(+, -, *, / )을 하면, 
TRUE/FALSE를 1/0으로 변환한 후에 연산한다는 사실을 알 수 있습니다.

TRUE/FALSE 값을 숫자로 변환하지 않고 SUM() 하면 , 실행되지 않습니다.
그래서, TRUE/FALSE를 1/0 으로 변환한 후에야 SUM()을 할 수 있습니다.

 


3.  "곱하기 1" Tip


"곱하기 1" 이란,   1을 곱하는 연산을 의미합니다.

TRUE/FALSE 를 1/0로 변환하는 가장 간단한 방법입니다.
 +, -, *, /  아무것이나 해도 숫자로 변환되지만, "곱하기 1"이 가장 간단합니다.

TRUE * 1 은 1이 되고,  FALSE * 1 은 0이 되기 때문에, 모두  SUM 하면 , TRUE 개수가 됩니다.

지금 아무 셀에나 =TRUE*1   이렇게 해보세요.  1이 반환될 것입니다.

아래 예에서,
SUM(A1:AS5) 라고 하면, 0 이 나옵니다. TRUE/FALSE는 sum 할 수 없기 때문입니다.

(A1:A5) 에 "곱하기 1"을 하면, TRUE는 1, FALSE는 0 으로 변환됩니다.  
그 상태에서 모두 더하면 TRUE 개수와 같아집니다.

 


4.  -- 연산자

 

TRUE/FALSE 를 1/0로 변환하는 또 다른 방법입니다.


"--" 다음에 TRUE 를 입력하고 엔터를 치면, 1 이 나옵니다.

 

 

--(A1:A5) 라고 해도, (A1:A5)*1 과 같은 결과를 가져옵니다.

 " *1 " 과 " -- " , 이 연산 TIP은 여러 단계의 조건 과정이 포함된 복잡한 수식에 자주 사용되는 고급 팁입니다.
알아 두시면 유용합니다.

 

5. FALSE 개수 세기

 

FALSE 개수 세기는  COUNTIF 또는 SUMPRODUCT 로 하면 됩니다.

 

B1:F1 범위에 TRUE/FALSE 값이 들어가 있습니다. 

 

COUNTIF 함수로는

COUNTIF($B$1:$F$1, FALSE)  이렇게 하면 됩니다.

 

SUMPRODUCT 함수도 가능한 이유는 조건식을 만들 수 있기 때문입니다.


SUMPRODUCT( --($B$1:$F$1=FALSE) )

이와 같이 하면 됩니다.

"--" 연산자가 변환 연산자라는 점은 이제 아시겠지요?

 

 

반응형