1. 문제
아래와 같이 이름과 값이 자료가 있을 때, 이름에 해당하는 값의 합계를 구하려고 합니다.
2. 해법 1
위와 같은 표에서 이름이 홍길동이거나 장발산에 해당하는 값의 합계를 구하려면
=SUMPRODUCT(($A$3:$A$7=D3)+($A$3:$A$7=D4),$B$3:$B$7)
라고 입력해서 합계를 구합니다.
위 수식을 보면 ($A$3:$A$7=D3)+($A$3:$A$7=D4)라고
($A$3:$A$7=D3)과 ($A$3:$A$7=D4)가 +로 연결되어 있는데, 이것은 두 가지 조건 중 하나만 일치해도 된다는 Or 조건입니다.
다시 말해 위 수식은 이름이 홍길동이거나, 이무인 경우가 됩니다.
그리고, 값의 범위 $B$3:$B$7에서 조건에 맞는 값을 찾아 합계를 구하는 것입니다.
이때 쉼표(,)를 사용하지 않고 곱하기(*) 기호를 사용하려면 앞의 조건 부분을 다시 괄호로 감싸야합니다.
3. 해법 2
이름을 배열로 만들기 위해 이름을 중괄호 안에 넣고, 이름 범위와 =으로 연결하면 합계를 구할 수 있습니다. 이때 값 범위와는 쉼표로 연결하면 안 되고 반드시 *로 연결해야 합니다.
=SUMPRODUCT(($A$3:$A$7={"홍길동","이무기"})*$B$3:$B$7)
4. 안 되는 경우 1과 수정
=SUMPRODUCT(($A$3:$A$7={"홍길동","이무기"}),$B$3:$B$7)라고 쉼표로 연결해도 될 듯한데, 안됩니다.
따라서, 이 때는 if 함수와 연결해서
=SUMPRODUCT(IF(($A$3:$A$7={"홍길동","이무기"}),$B$3:$B$7))
라고 해야 합니다.
if 함수를 사용했으므로 조건이 만족하는 경우의 값을 반환하므로 맞는 합계가 나오는 겁니다.
5. 안 되는 경우 2는 해결 방안 없음
위에서는 이름을 직접 입력했는데, 셀 주소를 이용해 아래와 같이 입력하면
=SUMPRODUCT(($A$3:$A$7={d3,d4})*$B$3:$B$7)
"이 수식에 문제가 있습니다"라는 에러 메시지 창이 표시되고, 확인 버튼을 누르면
d3셀 주소에서 멈추고 엔터키를 눌러도 입력이 안됩니다. 아래 함수 설명을 보면 '배열(array1)이어야 한다고 합니다.
이름을 직접 입력하면 배열로 인식하고, 셀 주소를 입력하면 배열이 안되나 봅니다.
{d3,d4}를 마우스로 끌어서 범위로 잡고 F9키를 눌러보면 위와 같이 '위 수식에 문제가 있습니다"란 메시지 창이 표시됩니다.
안 되는 건 안 되는 거죠. 따라서, 이 때는 조건 2개를 +로 연결하는 첫 번째 방법을 사용해야 합니다.
해결 방법을 만드는 것과는 별개로, 안된다는 것을 아는 것도 지식입니다.
입력이 안되므로 수식을 알 수 있도록 맨 앞에 작은따옴표를 입력해 두겠습니다.
그렇다고, D3,D4의 중괄호를 제거하고, $D$3:$D$4라고 해도
=SUMPRODUCT(($A$3:$A$7=$D$3:$D$4)*$B$3:$B$7)
수식에 문제는 없는데, 행 별로 비교하기 때문에,
다시 말해 $A$3:$A$7=$D$3:$D$4의 결과가 {TRUE;FALSE;#N/A;#N/A;#N/A}로 네 번째가 True가 돼야 하는데, #N/A라고 표시되는 등의 문제가 있어서 전체적으로 #N/A 에러가 반환됩니다.
6. index + match 함수 사용
Microsoft 365의 경우 =MATCH(D3:D4,A3:A7,0)라고 입력하면
(이전 버전이라면 수식 입력 후 엔터키가 아니라 Ctrl + Shift + Enter키를 눌러야 함)
찾는 값이 배열이기 때문에
반환 값도 {1;4}라고, 배열 형태로 반환됩니다.
따라서, index 함수와 결합해서 =INDEX(B3:B7,MATCH(D3:D4,A3:A7,0))라고 입력하면
마찬가지로 배열 형태로 값이 반환됩니다.
따라서, 이제 sum 함수와 결합해서 합계를 구하면 됩니다.
=SUM(INDEX(B3:B7,MATCH(D3:D4,A3:A7,0)))
함수를 여러 번 사용하면 의외로 되는 경우도 있습니다.
항상 갈고닦아야 합니다.
'Excel' 카테고리의 다른 글
이름 기준으로 중복 데이터 제거 및 데이터 병합하기 (2) | 2024.04.22 |
---|---|
병합셀에도 조건부 서식 적용하기 (0) | 2024.04.20 |
숫자를 한글로 표시하고, 수식에서 사용하기 (0) | 2024.04.15 |
셀 병합 유지 상태에서 합계 등 구하기 (0) | 2024.04.09 |
특정 기호 사이의 문자 찾기(2) (0) | 2024.04.08 |