본문 바로가기
Skill

SUMIFS : 복수 조건별 더하기 함수

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

SUMIFS는 여러개의 조건을 만족하는 값을 찾아서 더할 때 사용합니다.

1. SUMIFS 와 SUMIF 의  다른점

SUMIF는 조건을 1개만 지정할 수 있고,
SUMIFS에는 복수 개의 조건을 지정할 수 있습니다.

또 다른 중요한 차이점은  "합계범위" 인수의 위치가 반대라는 점입니다.
아래 두개의 인수 목록에서 "합계범위"의 위치를 비교해 보세요.


(1)   SUMIF( 조건범위, 조건, [합계범위] ) 
(2)   SUMIFS( 합계범위, 조건범위1, 조건1, 조건범위2, 조건2, ... )

차이점1)   SUMIF는 조건범위가 먼저 나오고,  SUMIFS에서는 합계범위가 먼저 나온다.

                 헷갈릴 수도 있지만, SUMIFS에서는,  (조건범위, 조건) 쌍은 계속 연결될 수 있으나

                "합계범위"는 1개 뿐이므로 이 형태가 되었다고 이해하면 쉽습니다.

차이점2)  SUMIF 에서는 세번째 인수인 합계범위가 선택 항목이지만, SUMIFS 에서는 필수 항목입니다.

                (SUMIF에서  세번째 인수가 생략되면, 첫번째 인수인 조건범위가 합계범위 역할도 한다는 점 유의하세요.)



2.  SUMIFS  조건이 1개인 경우


조건 :  A열에서 3보다 작은 행만 선택해서 E열의 값을 더하라.

이 사례는 조건이 1개이므로  SUMIF를 사용해도 되지만, SUMIFS를 사용해 보겠습니다.

 

 

SUMIF()를 사용한다면  SUMIF(A1:A4, "< 3", E1:E4) 와 같이, 합계범위(E1:E4)가 뒤로 옵니다.

 

2.  조건이 2개인 경우


조건1 : A열에서 값이 4보다 작고
조건2:  B열에서 값이 "가"인 행에서 E열의 값을 합하라.

 

 

3. 조건이 3개인 경우

조건1 : A열에서 값이 4보다 작고
조건2:  B열에서 값이 "가"이고
조건3:  C열에서 날짜가 2021년도 이하인 행에서 E열의 값을 합하라.


3개의 조건을 포함한 SUMIFS는
SUMIFS(E1:E4, A1:A4, "< 4", B1:B4, "=가", C1:C4, "<="&"2021/12/31")
이렇게 만들면 됩니다.

이와같이, (조건범위, 조건)을 계속 추가하면 됩니다.

 

 

4.  OR 조건인 경우

SUMIFS() 에서, 2개 이상의 조건을 넣을 때,  2개 조건을 모두 만족하는 값을 찾아서 합치게 됩니다.


예를 들어,  "< 4" ,  "=가" 이렇게 2개의 조건을 넣어서,
SUMIFS(E1:E4, A1:A4, "< 4", B1:B4, "=가")
이렇게 만들면, 2개의 조건을 AND 합니다.


그렇다면,
2개 중의 1개 조건만 만족해도 되는 값들을 찾아서 합하고 싶으면 어떻게 할까요?


1개의 조건별로 SUMIFS를 만들고 "+"를 하면 됩니다. (조건이 1개이므로 SUMIF()를 사용해도 됩니다.)
SUMIFS(E1:E4, A1:A4, "< 4")  + SUMIFS(E1:E4, B1:B4, "=가")
또는
SUMIF(A1:A4, "< 4", E1:E4)  + SUMIF(B1:B5, "=가", E1:E4)

 

결과 값은 240 + 260= 500 입니다.  

 


5.  SUMPRODUCT를 이용한 "OR 조건별 더하기"


SUMIFS를  SUMPRODUCT의 인수로 집어넣어서,  SUMPRODUCT(  SUMIFS()  ) 이런 형태를 만들면 어떤 기능을 할까요?

 

"OR 조건별 더하기"를 구현할 때,  복수개의 SUMIF() 또는 SUMIFS()를 사용하는 것보다 훨씬 간단하게 표현할 수 있습니다.
하지만, 
SUMPRODUCT()로 OR 를 구현할 때 한계점이 있습니다.
"같음"(=) 연산에 대해서만 가능하다는 한계점입니다.

아래 사례에서,
A열의 값이 1 또는 2 또는 4 인 경우에, E열의 값을 합치시오라고 하면 식을 어떻게 만들어야 할까요.
조건에 들어갈 값을 G1~I1 범위에 넣어둡니다.
식은, SUMIFS() 3개를 사용하여 만들 수도 있고, SUMPRODUCT( SUMIFS() ) 사용하여 만들수도 있습니다.
SUMPRODUCT( SUMIFS() )가 더 단순합니다.
"같음" 조건의 갯수가 많을수록 SUMIFS()를 + 하는 것보다 훨씬 단순할 것입니다.

두번째 식에서, SUMPRODUCT의 인수인 SUMIFS(E1:E4, A1:A4, G1:I1) 의 결과는  {90,  80,  100},  배열상수 1개입니다.


이것을 SUMPRODUCT의 인수로 넣으면, SUMPRODUCT( {90,  80,  100} ) 와 같이 되어, SUMPRODUCT의 인수는 1개 뿐이므로, 이 때는 배열의 값들을 모두 더할 뿐입니다.


그래서, 재미있는 점은 SUMPRODUCT 대신  SUM()을 사용해도 결과가 같습니다.

SUM( {90,  80,  100} )와 같이 하면 됩니다.

 

 

반응형