Excel

CountIfs는 *이 적용되나, SumProduct는 안됩니다.

별동산 2023. 2. 27. 08:41
반응형

countifs와 sumproduct.xlsx
0.01MB

 

 

왼쪽 자료를 기준으로 오른쪽 양식으로 집계하는 것을 해보겠습니다.

 

1. 구문

CountIfs함수의 구문은 아래와 같고,

COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2],…)

 

SumProduct함수의 구문은 아래와 같습니다.

=SUMPRODUCT(array1, [array2], [array3], ...)

 

2. 위 경우에 적용

가. 첫 번째 표 계산하기

(1) SumProduct 함수를 이용

SumProduct함수는 array가 연속되므로

배열함수의 경우와 같이 and는 *, or는 + 기호를 사용하여 조건을 걸 수 있습니다.

따라서, H2셀의 수식은

=SUMPRODUCT(($C$2:$E$5=H$2)*($B$2:$B$5=$G3))과 같이 작성할 수 있습니다.

 

($C$2:$E$5=H$2)는 C2셀에서 E5셀까지(셀 병합이 돼서 C에서 E가 된 것임) 중 LG전자인 경우 True, 1을 반환합니다.

($C$2:$E$5=H$2)를 마우스로 끌어서 범위를 지정한 다음 F9키를 누르면 LG전자가 첫 번째와 10번째에 있기 때문에 첫 번째와 10번째만 True가 반환됩니다.

수식을 범위로 잡고 F9키를 눌러 결과를 알아 봄

 

*는 And 조건이므로 앞의 조건과 뒤의 조건이 모두 충족돼야 합니다.

($B$2:$B$5=$G3)는 B2셀에서 B5셀 중 의장인 경우 True, 1을 반환합니다.

($B$2:$B$5=$G3)를 마우스로 끌어서 범위를 지정한 다음 F9키를 누르면 첫 번째와 세 번째만 True가 반환됩니다.

 

이제 SumProduct 안의 것을 모두 선택한 후 F9키를 누르면

첫 번째만 True와 True이기 때문에 True가 반환되고, 나머지는 False가 반환됩니다.

 

따라서, SumProduct 함수의 결과로 1이 반환되는 것입니다. 원래대로 수식으로 돌리기 위해 Esc키를 누릅니다.

그리고, H2셀은 H$2로 한 것은 오른쪽으로 이동할 때 열이 변해야 하기 때문에 H에는 $를 붙이지 않고,

내려갈 때는 행이 고정돼야 하기 때문에 2에는 $를 붙인 것이고,

$G3로 한 것은 오른쪽으로 이동하더라도 G열은 바뀌면 안 되기 때문에 $를 붙여 고정한 것이고,

내려갈 때는 행이 변하도록 $를 붙이지 않은 것입니다.

 

이제 H2셀의 채우기 핸들을 오른쪽으로 끈 다음, 아래로 끌면 i4셀까지 수식이 모두 채워지고, 값이 모두 1로 구해집니다.

 

(2) CountIfs 함수를 이용

조건은 같으므로 H3의 수식을 복사한 후 H8셀에 붙여 넣고, 수식을 수정하는데, 함수명을 CountIfs로 수정하고, CountIfs함수의 경우는 Criteria_range와 Criteria를 컴마로 구분해야 하므로

=COUNTIFS($C$2:$E$5,H$2,$B$2:$B$5,$G8)로 수정하면 1이란 값이 나오지 않고, #VALUE! 에러가 발생합니다.

조건 범위 2개의 개수가 달라 #VALUE! 에러 발생

 

이리저리 해보니 조건 범위가 앞은 12개이고, 뒤는 4개여서 그런 것입니다.

$C$2:$E$5를 $C$2:$C$5로 수정하니 원하는 값 1이 나옵니다.

조건 범위 2개의 개수를 일치 시킴

 

H8셀의 채우기 핸들을 오른쪽으로 끌로 i9셀까지 끌어 수식을 복사합니다.

 

나. 두 번째 표 계산하기

두 번째 표는 소속뿐만 아니라 이름까지 있어서 소속만을 비교해야 합니다.

(1) SumProduct 함수 이용하기

조건 범위와 조건의 주소가 다르므로 수정하면

H15셀의 수식 =SUMPRODUCT(($C$14:$E$17=H$14)*($B$14:$B$17=$G15))이 됩니다.

그런데 결괏값이 1이 아니라 0입니다.

CountIfs함수의 경우 * 적용 가

 

따라서, 이름(소속)에서 소속만 찾는 것이므로 *를 이용해서 조건을 *기호를 사용해서 "*"&H$14&"*"로 수정하고, 조건 범위도 $C$14:$C$17로 C열만 지정해서 수식을

=SUMPRODUCT(($C$14:$C$17="*"&H$14&"*")*($B$14:$B$17=$G15))로 만들어도

결괏값이 여전히 0입니다.

SumProduct함수의 경우는 * 기호를 적용할 수 없습니다.

 

(2) CountIfs 함수 이용하기

=COUNTIFS($C$14:$C$17,"*"&H$19&"*",$B$14:$B$17,$G20)로 수식을 작성하니 *기호가 적용되어 LG전자가 들어간 경우 True가 되어 결괏값 1이 반환됩니다.

 

이번에는 수식 계산 과정을 알아보기 위해 수식 탭 > 수식 분석 그룹에서 수식 계산 명령을 누른 후 계산 버튼을 3차례 누르면 "*"&H$19&"*"가 "*LG전자*"이 됩니다.

수식 계산 명령

 

조건 범위1이 조건1이고, 조건 범위2가 조건2인 경우의 수를 세는 것이 CountIfs함수인데,

*(LG전자만 일치하면 앞뒤는 어떤 문자가 와도 됨)가 적용되어 SumProduct함수와는 달리 결괏값이 제대로 반환됩니다.

 

=C14:C17="*LG전자*"라고 C14셀에서 C17셀 중 LG전자가 있는지 살펴보면 모두 False가 되는데 CountIfs는 True를 반환합니다. 이것이 SumProduct함수와 CountIfs함수의 차이점입니다.

 

CountIfs함수의 설명 발췌

 

H20셀의 채우기 핸들을 오른쪽, 아래로 끌면 수식이 모두 채워집니다.

countifs와 sumproduct(완성).xlsx
0.01MB

반응형