sumif 와 sum배열함수
두 가지 함수 사용에 있어 차이는 뭐라고 생각이 들지 모르겠다.
개인적인 생각은 sumif
는 조건에 와일드카드문자(*)를 사용할 수 있다는 장점을 가지고,
sum
배열수식은 조건을 정의하기 위해 다른 함수를 사용할 수 있다는 장점을 가지는 정도겠다.
배열함수 내에서의 와일드카드문자
배열함수 내에서, find
함수를 사용해서 와일드카드문자(여기서는 *
)를 대체해서 사용하는 방법이었다.
아래 표에서, 입금은행이
- 국민/기업은행 이면 "국민은행 또는 기업은행" 표시
- 우리은행 이면 "우리은행" 으로 표시
하려고 한다.
사용된 수식을 보면 입금은행 셀에서 "국민" 또는 "기업" 문자열을 FIND
함수로 찾고,
이를 COUNT
함수로 에러가 아닌값을 숫자로 변환,
결과가 0일 경우(같은 값이 없을 경우)IF
함수에서 FALSE
값인 "우리은행"을 반환하고,
결과가 1 이상일 경우(같은 값이 있을 경우),IF
함수의 TRUE
값을 반환하게 된다.
길게 적었지만, 별건 없다.
영역참조 배열수식에서 사용
위에서는 단일 셀값에 대한 처리였다면,
일반적인 배열함수에 이를 적용하는 방식은 여러가지가 있을 수 있지만,
여기서 사용한 방법은 FIND
함수에서 찾아진 에러 값을ISERROR
함수로 TRUE
로 처리하는 방법이다.
위의 표를 아래 요약 테이블로 정리를 하려고 한다.
- 요약 테이블 맨 왼쪽에 있는 입금은행 열을 기준으로 값을 찾아야 한다고 하자
** 은행이름이 앞 두자리만 있으므로 조건에 와일드카드 문자 사용이 필요하다
** 위 테이블에서 은행이름열은 '은행' , 금액은 '금액' 으로 영역에 대한 이름정의를 해두었다.
두 가지 방법 중 뭘 사용해도 값은 동일하게 나온다. 사용된 수식을 살펴본다.
- SUMIF
수식은 간단하다. 와일드카드문자를 &
로 연결해서 사용하였다.
- SUM
배열수식은 FIND
함수와 ISERROR
함수, NOT
함수를 연결해서 사용하였다.
- FIND
에서 발생한 에러(#VALUE
)는 ISERROR
함수에 의해 TRUE
가 되고, 숫자 값은 FALSE
가 된다.
- NOT
으로 TRUE
와 FALSE
를 서로 바꿔준다.
다중조건 배열수식에서 사용
위의 경우라면, 구지, 복잡한 함수들을 동원해서 수식을 작성할 필요가 없다.
아래와 같은 경우는 어떨까?
[23일 기업은행 입금금액]
: 위에 작성된 배열수식을 2가지 조건으로 연결하였다. 23일은 일자를 텍스트형태로 바꿔서 조건을 달아주었다.
[금요일 우리은행 또는 기업은행 입금금액]
: 위와 마찬가지로 2가지 조건으로 연결하였다. 금요일은 일자를 텍스트형태로 바꿔서 조건을 달아주었다.
: 은행이름은 find
함수에 배열을 넣는 방식으로 두가지 경우를 모두 포함하도록 하였다.
복잡하지만 유용함
수식은 복잡해졌지만, 다중 조건을 처리하는 sumifs
함수 대비해서 더 강력한 수식을 만들 수 있다.
이 정도 배열수식을 컨트롤할 수 있다면, 다른 배열수식이 등장했을때, 무리없이 처리가 가능할 것이다.
F9
키를 통해 미리 결과를 확인해본다면, 적절하게 수식을 만들어 갈 수 있을 것이다.
긴 글보다는 영상으로 보시는게 나을수도 있습니다만, 좀 지루할 수 있습니다. ㅋㅋ