자료를 작성하다 보면 자료별로 자료가 다른지 비교하거나 다른데서 자료를 가져와야 할 때가 있습니다.
이 때도 Vlookup함수를 사용할 수도 있고, SumProduct, SumIfs, Sum+If 배열 수식 등 다양한 방법을 적용할 수 있습니다.
아래와 같이 왼쪽과 오른쪽에 지역별 월별 판매량 자료가 있고,
오른쪽에는 인원수 데이터만 있다고 할 때 왼쪽에 맞는 값을 찾아서 붙일 경우를 생각해 볼 수 있습니다.
※ 일반적으로는 시트를 달리하겠지만 이해가 쉽도록 왼쪽과 오른쪽에 배치했습니다.
1. 왼쪽과 오른쪽의 판매량 검증하기
Vlookup함수는 조건에 맞는 값을 찾아주는 함수이기 때문에 이 함수를 맨 먼저 사용해야 하지만 조건 2개를 지정할 수 없기 때문에 새로운 열을 추가해야 하기 때문에 맨 나중에 설명하겠습니다.
가. SumIfs함수를 이용하는 경우
SumIfs함수는 여러 가지 조건에 부합하는 범위의 합계를 구하는 함수이기 때문에 매우 적절합니다. 그러나, 조건에 부합하는 데이터가 여러 개 있을 경우 합계를 반환한다는 점을 주의해야 합니다. 그러나, 위 경우는 조건에 부합하는 데이터가 하나뿐이기 때문에 문제 없습니다.
수식은
=SUMIFS($L$2:$L$10,$J$2:$J$10,A2,$K$2:$K$10,B2) 입니다.
더할 범위, 조건 범위1, 조건1, 조건 범위2, 조건2 순으로 입력하므로,
더할 범위는 오른쪽의 판매량인 L2:L10이 되는데, 절대참조형식으로 입력해야 하며,
조건 범위1은 오른쪽의 지역에 해당하는 J2:J10인데 마찬가지로 절대참조형식으로 입력해야 합니다.
조건1은 왼쪽의 지역명으로서 줄 별로 비교해야 하므로 첫번째 행은 A2가 되며, 내려갈 때 자동으로 변해야 하므로 상대참조형식으로 지정해야 합니다.
이런 식으로 조건 범위2는 K$2:$K$10이 되고,
조건2는 B2가 됩니다.
따라서 D2셀의 수식은 오른쪽 범위에서 A2셀 및 B2셀과 일치하는 판매량의 합계를 가져오는 것인데, L2셀의 값이 됩니다.
나. SumProduct 함수를 이용하는 경우
SumProduct 함수를 이용하면 2가지 이상의 조건에 만족하는 값을 *기호를 연결하여 추출한 후 합계를 구해주는데, 마찬가지로 아래 경우는 해당하는 값이 하나이기 때문에 합계를 해도 하나뿐이 안됩니다.
수식은 =SUMPRODUCT(($J$2:$J$10=A2)*($K$2:$K$10=B2)*$L$2:$L$10)으로
조건 2개가 * 기호로 연결되어 있고, 조건에 일치하면 1을 반환하므로 여기에 더할 범위를 곱하면 조건이 일치하는 더할 범위만이 남습니다. 그런 다음 합계를 반환해줍니다.
($J$2:$J$10=A2)*($K$2:$K$10=B2)*$L$2:$L$10까지 마우스를 끌어서 범위로 잡은 후 F9키를 누르면
오른쪽에서 첫번째 줄만 조건에 부합하므로 1222가 구해지고, 나머지는 조건에 부합하지 않기 때문에 모두 0입니다. 따라서, SumProduct의 값은 1222가 됩니다.
다. Sum + If 배열 수식을 이용하는 경우
SumProduct함수와 비슷한데,
수식이 =SUM(IF(($J$2:$J$10=A2)*($K$2:$K$10=B2),$L$2:$L$10))로서
더할 범위인 L2:L10을 *로 연결하지 않고, If함수를 사용했으므로 참일 때의 값에 입력한다는 점만 다릅니다.
그리고, Microsoft 365를 제외하고는 CSE(Ctrl + Shift + Enter)키를 입력해야 하며, 이 키를 입력하면 수식 입력줄에 중괄호({ })가 수식 바깥 쪽에 생깁니다.
그러나 Microsoft 365의 경우는 엔터키를 눌러 수식을 입력하면 중괄호 표시가 생기지 않습니다.
라. Index와 Match 함수를 결합해서 이용하는 경우
Match함수를 사용할 때 인수가 찾을 값(lookup_value), 찾을 범위(lookup_range), 일치 형태(match_type)인데,
찾을 값을 &(결합 연산자)로 연결하고, 찾을 범위도 &로 연결해서 지정할 수 있습니다. 그리고, 정확한 일치하는 값을 찾아야 하므로
Match함수를 이용한 수식은 MATCH(A2&B2,$J$2:$J$10&$K$2:$K$10,0)이 됩니다. 그러면 찾는 값의 위치를 반환하는데 첫번째 줄이 일치하므로 1이 반환됩니다.
MATCH(A2&B2,$J$2:$J$10&$K$2:$K$10,0)를 마우스로 범위를 잡은 후 F9키를 눌러 1이라는 값을 확인할 수 있습니다.확인한 후에는 Esc키를 눌러 원래 수식대로 돌립니다.
그리고 나서, 판매량에서 해당하는 값을 찾으려면 Index함수를 사용하면 됩니다. Index함수는 범위, 행수, 열수가 인수인데, 열수는 생략가능하므로 match함수와 연결하면
=INDEX($L$2:$L$10,MATCH(A2&B2,$J$2:$J$10&$K$2:$K$10,0))이 됩니다.
마. Vlookup함수를 이용하는 경우
Vlookup함수에서 찾을 범위를 Match함수처럼 &로 연결해서 지정해서 Vlookup함수를
=VLOOKUP(A2&B2,$J$2:$J$10&$K$2:$K$10,3,0)라고 입력하면 #REF! 에러가 발생하므로 이렇게 하면 안되고, 찾을 조건과 찾을 범위에 해당하는 값을 열을 추가해서 새로 만들어야 합니다.
그런데, Vlookup함수의 경우는 찾을 값이 찾을 범위의 맨 앞에 있어야 하므로 J열 왼쪽에 열을 추가하고,
필드 값을 지역과 월을 결합한 값으로 입력합니다. 결합할 때는 & 연산자를 사용하며, J2셀에 =K2&L2라고 입력하고, J2셀의 채우기 핸들을 더블 클릭해서 J10셀까지 입력합니다.
그리고, Vlookup함수의 table_array를 J2:M10으로 바꾸고, 판매량이 네번째 있으므로 col_index_num을 4로 바꾸면 됩니다.
=VLOOKUP(A2&B2,J2:M10,4,0)
lookup_value는 그대로 A2&B2로 둬도 됩니다.
바. C열의 값과 D열의 값 비교하기
비교할 때는 비교 연산자인 =을 사용할 수도 있지만, 숫자끼리 비교할 때는 -(빼기)로 하는 것이 더 직관적입니다.
i2셀에 =c2-d2라고 입력하고
D2셀부터 i2셀까지 선택한 후 i2셀의 채우기 핸들을 더블 클릭해서 i10셀까지 복사합니다.
그러면 서울 2월과 강원 3월이 1과 -1이 차이나는 것을 알 수 있습니다.
데이터가 많을 때는 필터를 건 후
0인 것의 체크를 해제하면
값이 다른 것만 표시되므로 더욱 쉽게 다른 데이터를 찾을 수 있습니다.
2. 왼쪽에 오른쪽의 인원수 추가하기
i열 다음에 인원수를 추가할 수 있도록 필터를 해제한 후 J열과 K열을 선택한 후
마우스 오른쪽 버튼을 누르고 삽입 메뉴를 누릅니다.
J1셀에 인원수라고 입력하고,
J2셀에 Vlookup 함수를 이용해
=VLOOKUP(A2&B2,$L$2:$P$10,5,0)라고 입력하면 A2셀과 B2셀을 결합 한 값을 L열에서 찾아 5번째 값을 가져오는 것이므로 인원수를 쉽게 구할 수 있습니다.
이제 수식을 채우기 위해 J2셀의 채우기 핸들을 더블 클릭하면 됩니다.
'Excel' 카테고리의 다른 글
Cell의 속성을 알려주는 Cell 함수 (2) (0) | 2023.05.01 |
---|---|
Cell의 속성을 알려주는 Cell 함수 (1) (0) | 2023.04.29 |
SumProduct 함수 - 곱한 것의 합을 반환 (0) | 2023.04.20 |
월말을 구해주는 EOMonth 함수 (2) | 2023.04.17 |
WeekNum과 ISOWeekNum 함수 - 주 번호 반환 (0) | 2023.04.14 |