아마도 실무에서 가장 많이 하는 작업이 합(∑)을 구하는 것이 아닐까 한다. 합이란 말 그대로 더하기를 하는 거다. 이에 좀 유치하지만 아래 자료를 바탕으로 엑셀에서 더하기를 해본다.
엑셀에서는 더하기를 위해 Sum 함수를 지원하고 있으니 이용해 보자.
너무도 쉽구나(^^). 그럼 이번엔 조금 다르게 더하기를 하자.
어디선가 아우성이 들리는 것 같다(쉬운 거 놔두고 참 복잡하게도 산다).
방식2는 행렬을 이용한 더하기다. 정확하게는 더하기가 아니라 곱하기다. 더하기 얘기 하다가 갑자기 곱하기가 나와서 어리둥절 할 것 같은데, MMULT 함수의 이름 구성을 보면 'Matrix + Multiply, 즉 '행렬 곱하기'라고 충분히 유추할 수 있다. 그러니 위의 방식2는 행벡터와 열벡터를 곱한 것이다. 단지 행벡터의 원소가 모두 1이기 때문에 결과적으로 더하기와 같아진 것 뿐이다.
아무튼 계속 이어가 보자.
방식3은 방식2에서 사용한 행벡터를 조금 다르게 적용한 것이다. 여기서 TRANSPOSE(ROW(1:5)/ROW(1:5))가 왜 {1,1,1,1,1}이 되는 지는 각자 고민해 보시기 바란다.
참고로, 경우는 다르지만 오픈오피스의 캘크는 단위행렬을 지원하는 함수가 있어서 편리했는데 배열상수를 지원하지 않는 주소 체계라서 한 셀에서 한 방에 처리 할 수 없어 아쉬웠다.
방식2에서 방식3으로 넘어가는 게 자연스럽게(?) 느껴진다면,
방식4가 좀더 눈길을 끌지 않을까?(어이쿠, 아우성이 더 많이 들리는 것 같다) 하지만 조금만 더 찬찬히 봐주시기 바란다. 노파심에서 말인데, 일부러 복잡하게 더하기 한 게 아니니 오해 마시기를!
바로 앞 내용에 그다지 거부감이 없었다면 또 더하기를 하자.
자료가 조금 많다.
비슷한 것 같지만 앞에서 살펴본 방식과 뭔가 또 다르다?
그렇다. 앞에서는 MMULT 함수의 결과가 원소 하나만 나왔기에 SUM 함수를 사용하지 않았는데 여기서는 MMULT 함수 결과가 1 by 4 인 벡터로 나오기에 SUM을 한번 더 씌워줬다. 그렇지만 역시나... 쉬운 걸 놔두고 어렵게 산다.
그리고 빠뜨린 게 있는데, 수식의 구성에 따라 배열수식으로 입력해야 한다. 즉 수식 입력 후 ENTER 키만 누르는 게 아니라 CTRL + SHIFT + ENTER 키를 동시에 눌러야 한다.
이쯤에서 질문 하나 ㅡ 각각의 자료 열의 합이 가장 큰 열은?
뜬금 없는 질문인데 이와 유사한 질문이 어제 모 사이트에 올라왔다. 이 글을 작성하는 이유는 그 질문이 유익한 것이라고 생각되었기 때문이다. 조금 복잡하지만 여러분도 MMULT 함수의 매력을 느껴 보시기 바란다.
다시 돌아가서...
위의 그림처럼 별도 셀에 중간 결과값을 도출해 놓으면 나중 수식 작성이 쉽다. 이제 최대값을 갖는 자료 열을 찾는다.
방식1 나온거 봐서 또 줄줄이 엮어 방식4까지 가려는 거 아녀? ㅡ 그렇다!!
SUM을 놔두고 굳이 MMULT를 고려한 이유는 셀을 이용하지 않고 처리하기 위해서다. 이렇게 별도 셀을 이용하는 것과 이용하지 않는 것 중 어느 것이 효율적인지는 잘 모르겠지만, 자료를 처리하다 보면 셀 내에서만 처리해야 되는 경우가 가끔 있어서다.