본문 바로가기
조아하는거/PC

EXCEL - INDEX와 MATCH를 활용한 다중 조건 검색 함수

by 시무정 2022. 3. 22.
반응형

 

 


{=INDEX($E$2:$E$13,MATCH(1,(G2=$A$2:$A$13)*(H2=$B$2:$B$13)*(I2=$C$2:$C$13)*(J2=$D$2:$D$13),0),1)}

 


 


조건이 간단한 경우엔 if 함수를 쓰면 되지만, 그게 아니라면 if함수로도 버거운 순간이 찾아오기 마련입니다.

그럴 땐 index 함수와 match 함수를 섞어서 쓰면 아무리 조건이 많아도 쌉가능한 부분

 

만약 내가 이런 상황에 처했다면 본 글을 통해서 손쉽게 격파하길 바랍니다.

엑셀 조빱ㅇㅣ에요 걱정 ㄴㄴ


1. 어떤 상황에서 쓰는건가요?

예를 들어서 당신이 노트북 가격표와 관련된 자료를 정리하고 있고,

 

여기서 1개의 조건이 아닌 여러개의 조건을 충족하는 제품의 가격을 알고싶을 때 사용할 수 있다.

 

 

바로 저기 K2셀에 가격이 딱 나오게 하고싶을 때 쓰는 함수다.

이런 비슷한 상황에서 모두 사용가능하다.

 

지금은 조건이 4개지만 더 적게도, 더 많게도 사용할 수 있다.

 

(조건이 1개면 걍 if함수 쓰자 ㅎㅅㅎ)


2. 어떻게 쓰나요?

엑셀 좀 하시는분들은 아래 사진만 보고도 바로 따라하실 수 있습니다.

 

일단... 결과부터 보여드리면,

요렇게 생겼습니다.

 

보시기에 조금 생소한 수식입니다. 

 

수식 중간에 =, * 기호가 쓰여서 그런지 더더욱 생소하게 느껴지지만.. 이해하면 조금은 덜 생소하게 됩니다.

 

수식은 다음과 같습니다.

 

{=INDEX($E$2:$E$13,MATCH(1,(G2=$A$2:$A$13)*(H2=$B$2:$B$13)*(I2=$C$2:$C$13)*(J2=$D$2:$D$13),0),1)}

 

양쪽 끝에 있는 {, } 표시는 뭐냐고요? 이건 배열수식이란건데, Ctrl + Shift + Enter를 누르면 적용됩니다.

배열에 대해서 설명은 나중에 하도록 할게요...ㅎㅎㅎ 지금은 그냥 아 그렇구나 하시는게..!!

 

구체적인 함수 구성은 아래에서 후술하겠습니다.


3. 함수의 구성

index 함수는 3개의 인수를 가집니다.

순서대로 검색하는 범위, 세로위치(행), 가로위치(열) 입니다.

 

=index(검색하는 범위, 행, 열)

1) 검색하는 범위 : 내가 찾고자 하는 값이 포함된 범위

전 가격을 찾고자 했으므로 E2셀부터 E13셀까지 지정해줬고, 절대참조로 묶어놨습니다.

 

2) 세로 위치 : 이건 매치 함수를 통해 찾을거니까 후술하겠습니다.

 

3) 가로 위치 : E열 안에서 찾을거라 별도 이동이 없어서 1로 써줬습니다. (이 경우엔 1을 생략해도 됩니다.)


이제 세로위치에 들어갈 match함수에 대해 알아보겠습니다.

 

여기서 match 함수는 인덱스함수의 세로위치를 산출하게되는 역할을 하게 됩니다.

 

match 함수는 3개의 인수를 갖습니다.

 

순서대로 찾고자 하는 값, 검색하는 범위, 일치여부입니다.

1) 검색하는 값 : 내가 찾으려고 하는 값인데 위에 사진에서는 1이 써있다. 이게 왜그런가? 싶은데... 아래를 보면 조금 이해가 될지도..!

 

2) 검색하는 범위 : 우선 조건 하나를 보면 G2=$A$2:$A$13 라고 되어있습니다.

G2는 내가 찾길 원하는 제품명이고,

A2:A13은 제품명이 나열된 목록인데요...

 

G2=A2:A13의 값이 일치할 때 1이란 값을 내놓는다.

 

왜냐하면 엑셀에서 참(True)은 항상 1이고, 거짓(False)는 항상 0이기 때문이다.

 

그렇다면 제품명인 G2와 제품명의 목록인 A2:A13의 값이 일치할 때 1을 내놓고

다른 CPU, GPU, RAM도 모두 1을 내놓을 때

이 4가지 조건을 서로 곱해주면 그 값은 1이다.

 

(G2=$A$2:$A$13)*(H2=$B$2:$B$13)*(I2=$C$2:$C$13)*(J2=$D$2:$D$13) = 1

 

이 성립될 때를 찾는게 매치함수의 역할인 것이다.

 

3) 일치 여부 : 첫번째 인수에서 검색하는 값이 두번쨰 인수에서 찾은 값과 정확하게 일치해야 하는지 여부를 판단하는 것이다. 

 

정확하게 일치하는 값을 찾고자 한다면 0을 넣으면 됩니다.

 


위 과정을 통해서 매치함수는 세로 위치가 어딘지를 반환하게 됩니다.

 

제가 찾고자 하는 제품명 B, intel CPU를 가지고 nvidia GPU가 탑재되었고, 램이 32gb인 조건의 세로위치가 8로 나오게 됩니다.

 

그래서 인덱스 함수에서 8번째 세로위치에 해당하는 1,100,000원을 찾아서 결과로 산출하게 되는거죠..!!!

 

이해가 잘 되셨는지 모르겠찌만 어려우시면 그냥 따라하는것을 추천합니다.

 

하다보면 조금 이해가 될거에요!

 

ㅁㅏ지막에 Ctrl + Shift + Enter 눌러서 배열함수로 만드는거 잊지마세요!

함수 다 입력하고 그냥 엔터치면 에러뜹니다 ㅋ

 

 

 

그리고 예제파일도 함께 올리겠습니다.

 

index, match 예제.xlsx
0.01MB


그럼 20,000..

반응형

댓글