엑셀 sumproduct함수의 구조 이해하기 본문

엑셀 sumproduct함수의 구조 이해하기

엑셀 함수는 그 종류가 상당히 많지만..실질적으로 사용하는 함수는 몇가지 되지 않습니다^^ 


저도 마찬가지지만..엑셀 '함수'를 비롯해서 이것 저것 많이 알더라도 결국은 편하면서 자주 반복적으로 쓰이는 기능만 계속 쓰는 사람들이 대다수에요. 



이번에 알아본 sumproduct함수도 마찬가지인데, 거의 사용되지 않는 함수입니다. 평소에는 거의 'sum'함수만 거의 자주 쓰이는 편이죠. 


요즘에는 이처럼 다양한 엑셀 함수를 나름대로 그 구조파악도 하고 기능에 대해서 알아보고 있는중인데..이런 함수도 있었구나 하는 생각이 들때가 많더라구요. 


그래서 이번시간에는 엑셀 sumproduct함수의 구조를 조금 쉽게 이해해보고자 간단하게 분석을 해보았습니다. 이 함수에 대해서 잘 모르시는 분들은 참고하세요~


엑셀 sumproduct함수의 구조 이해하기1


이 함수가 어떤 기능을 가지고 있는지 어떻게 적용되는지 파악해보기 위해서 위와 같이 가로,세로의 합계를 나타내는 데이터를 만들어두었습니다. 


그리고 임의의 셀에서 =sumproduct라고 입력해보니..'배열 또는 범위의 대응되는 값끼리 곱해서 그 합을 구하는 함수'라고 정의되어 있는데..말이 조금 어렵죠?^^ 


곱하기 함수라는 뜻인지 합하는 함수라는 뜻인지 헷갈리기도 하고..


엑셀 sumproduct함수의 구조 이해하기2


sumproduct함수의 구조를 보면 단순히 배열1,배열2,배열3....이렇게 적용이 되더군요~ 그런데 그 배열이라는 것이 어떤 경우에라도 내가 생각하는 대로 적용이 될까요?


엑셀 sumproduct함수의 구조 이해하기3


먼저 세로합계의 데이터에서 각 3개 열의 범위를 지정해서 sumproduct의 배열에 넣어보았습니다.


엑셀 sumproduct함수의 구조 이해하기4


그랬더니 결과값은 '30'이 나왔습니다. 해석해보면..첫번째 열의 합계가 15, 두번째 열의 합계는 5, 세번째 열의 합계는 10이 되는데..이 모든 수치를 합하면 30이 나온다는 이야기죠. 


즉..각 열의 합계를 구하고 그 결과치를 다시한번 합해주는 엑셀 함수가 'sumproduct'라고 생각할 수 있습니다. 실제로 이렇게 범위를 지정한 테스트를 해보니까 그렇더라구요~


엑셀 sumproduct함수의 구조 이해하기



엑셀 sumproduct함수의 구조 이해하기5


하지만...위와 같이 범위 지정이 아닌 숫자를 직접 sumproduct함수에 넣어주면 결과값이 30이 아니라 750이 나옵니다. 왜 그럴까요?


엑셀 sumproduct함수의 구조 이해하기6


혹시나 해서 숫자가 아닌 링크를 적용해도 역시 결과값은 마찬가지로 750이 나오더라구요. 


그렇다면 엑셀 sumproduct함수는 단순히 범위내에서 합을 구해주는 함수가 아니라 어떤 경우는 곱하기가 적용된다는 의미인듯 합니다. 그래서 이런 부분은 염두해두는 것이 좋을듯 하네요.


엑셀 sumproduct함수의 구조 이해하기7


그런데 또 이상한점을 발견했습니다. 위와 같이 세로합계 데이터중에서..배열을 해주는 범위를 다르게 적용해주었더니 '수식에 사용한 값의 데이터 형식이 잘못되었습니다'라는 오류메시지가 ㅠㅠ


엑셀 sumproduct함수의 구조 이해하기8


이번에는 특정범위 배열과 숫자, 링크를 합쳐서 적용해보니...또 오류메시지가 등장~


엑셀 sumproduct함수의 구조 이해하기9


그리고 마지막으로 위와 같이 가로(행),세로(열)을 조합해서 엑셀 sumproduct함수를 적용해보았더니, 역시 마찬가지로 데이터 형식이 잘못되었다는 오류메시지가 나오더군요. 


결론적으로 이 함수를 적용하려면 행과 열도 구분을 해줘야 하고, 직접 숫자를 넣어줄 경우는 숫자만 넣어야 하고, 링크적용도 역시 링크적용만으로 구성이 되어야 한다는 의미에요. 


확실한건..특정 범위를 배열속에 넣어주면 무조건 '합하기'로 적용되고 숫자나 특정셀 링크를 적용하면 무조건 '곱하기'로 적용된다는 사실입니다. 


쉬운듯 하면서도 어려운 함수죠?^^ 하지만 이런 부분들만 명확히 이해하고 있다면..나중에 이러한 함수를 쓰게 되더라도 조금 더 빠르고 쉽게 적용이 가능하리라 생각되네요.