엑셀에서 A1*A2 + B1*B2 + ... + N1*N2을 원하고 있다.
하지만 SUM(A1:N1*A2:N2)는 안 된다.
(의도한 결과가 안 나오고, 위치에 따라 다르게 나온다. 예를 들어 컬럼 C에서는 C1*C2를 보여준다.)
SUM(A1*A2 : N1*N2)도 안 된다.
다행이 SUMPRODUCT라는 게 있어서 SUMPRODUCT(A1:N1, A2:N2)처럼 적으면 된다.
그러나 만약 A5*A1+A2*A2*SIN(A3) + ... + N5*N1+N2*N2*SIN(N3)정도를 원한다면?
만약 array를 element 별로 더하고 곱하는 게 된다면,
SUM(A5:N5 * A1:N1 + A2:N2 * A2:N2 * SIN(A3:N3))처럼 적을 수 있다.
그러나 이렇게 입력하면 결과가 안 나올 것이다.
그래서 SUMPRODUCT(A5:N5, A1:N1) + SUMPRODUCT(A2:N2, A2:N2, SIN(A2:N2))처럼 식이 복잡해진다.
해보니까 SIN에 argument로 array를 넣는 것은 된다. 답도 의도한 대로 나오는 것 같다.
너무 복잡하다. 그래서 인터넷을 열심히 뒤져보았다.
알고보니 array formula라는 게 있다고 한다.
SUM(A1:N1*A2:N2)처럼 입력하고 CTRL + SHIFT + ENTER하면 원하는 결과가 나온다.
이 방법을 쓰면 SUM(A5:N5 * A1:N1 + A2:N2 * A2:N2 * SIN(A3:N3))도 원하는 결과를 내 놓는다.
그럼 이런 게 왜 필요하냐는 건데...
숫자만 있거나 하면 SUMPRODUCT가 된다지만...
문자열에 숫자를 대응시켜서 사용해야 하는 경우가 있다.
이 기능을 사용하면
SUM(IF(E7:G7="A",5,IF(E7:G7="B",4,IF(E7:G7="C",3,IF(E7:G7="D",2,IF(E7:G7="F",0))))))
가 가능해진다.
(IF 부분이 지저분한데, case 문법이 있는 것도 아니고, 좀 그렇다.)
이처럼 중간 셀을 안 만들고 복잡한 계산이 가능하다.
(IF 부분이 지저분한데, case 문법이 있는 것도 아니고, 좀 그렇다.)
이처럼 중간 셀을 안 만들고 복잡한 계산이 가능하다.