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} )와 같이 하면 됩니다.
'Skill' 카테고리의 다른 글
1을 count 한 것은 1을 sum 한 것과 같다 (0) | 2023.07.30 |
---|---|
IF IFS IFERROR : 엑셀 조건 함수 (0) | 2023.07.29 |
SUMIF : 조건별 더하기 함수와 조건식 만드는 방법 (0) | 2023.07.28 |
SUM, AVERAGE : 더하기와 평균 구하기 함수 (0) | 2023.07.28 |
COUNT 함수군 (0) | 2023.07.28 |