엑셀 index함수 match함수 이미지 검색하기

어떤분께서 질문을 올리셔서 저도 한번 고민을 해보았습니다. 상품자료를 입력해 놓은 데이터에서 자료를 검색하고 해당 상품 이미지가 나타나는 것이였는데요.


상품을 검색하는 것은 지난 시간에 올린 "엑셀 vba 기초 데이터 검색하기"를 포스팅 내용으로 코드를 만들었고 이미지 검색은 엑셀 index 함수와 match 함수를 이용하여 해당 상품 이미지가 검색되도록 만들었습니다.


상품 이미지 검색 프로그램 구성


과일시트에 아래와 같이 데이터가 있습니다. 상품명과 관련된 내용이 있고 마지막에는 해당 상품 이미지가 위치해 있습니다.



위에 있는 내용을 검색시트에서 상품명을 입력하고 [검색] 버튼을 클릭하면 이미지와 상품명에 관련된 상세 제품 설명이 나타나면 되는 것입니다.


그럼 이제 해당 구성이 끝났으니 vba로 작성해 보도록 하겠습니다.


상품 데이터 검색하기

과일시트에 총 데이터가 얼마나 들어있는지 확인하기 위한 코드를 작성해 보도록 하겠습니다. 과일시트에서 G1셀에 counta 함수를 이용하여 현제 데이터의 갯수를 항상 알수있도록 만들었습니다. 현재 값은 5로 나타납니다.



검색시트에서 상품을 검색할 수 있는 버튼을 만들고 코드를 작성해보도록 하겠습니다. 상단에 있는 [개발도구]에서 [삽입]-[단추]를 선택한 다음 알맞은 크기로 그려려줍니다. 그러면 [매크로 지정]창이 나타나면 [새로 만들기]를 클릭합니다.


코드 창에 아래와 같이 코드를 입력하는데요. 앞에 포시팅과 연관을 지으려고 변수를 고치지 않았습니다. 

변수 C에는 총 현재 데이터의 수를 넣어주는데 아까 과일시트에 만들어 주었던 counta 함수의 결과값을 넣어 줍니다. D변수는 1부터 시작하여 현재 데이터 수까지 과일시트 A3~A7 값 중 D1에 해당하는 값이 있다면 그 과일시트 해당 행의 값을 검색시트 A6부터 차례대로 넣어 주라는 명령어 입니다.



index 함수, match 함수를 이용하여 이미지 검색하기

index함수와 match 함수를 이용하여 해당 데이터의 이미지를 검색할 것인데요. 우선 두 함수의 차이점을 알아야하는데요. index는 해당 값을 찾는 것이고 match함수는 해당 값이 몇 번째에 있는지를 알려주는 것이라고 이해하시면 쉬우실 것 같습니다.


해당 상품 이미지를 찾을 때에는 먼저 매치 함수를 이용하여 데이터가 몇번째에 위치해 있는지를 확인하고 인덱스함수로 해당 이미지를 값을 찾아내는 것입니다.


먼저 이름을 정의해 줄 것입니다. A3~A7까지 블록을 씌워준 다음 2번란에 "상품명"이라고 이름을 정의해 줍니다.


마찬가지로 F3~F7까지 블럭을 지정한 다음 2번 위체에 "사진"이라고 이름을 지정해 줍니다.



그리고 검색시트에 해당 이미지 중 아마 것이나 복사하여 이미지를 배치시켜줍니다.


상단 메뉴에서 [수식]-[이름정의]를 클릭합니다. 그리고 이름에 [사진가져오기]라고 입력합니다.


참조 대상에는 =INDEX(사진,MATCH(검색시트!$A$9,상품명,0)) 이라고 입력해 줍니다. 


- MATCH(검색시트!$A$9,상품명,0)

A9셀에 해당 값을  검색 예를 들어 상단에 [검색] 버튼을 클릭하여 조회한 값이 "바나나"가 나왔다면 이름 정의한 상품명에서 "바나나"와 일치하는 값(0)을 검색하여 값을 반환해라. 예시 값은 3


-INDEX(사진, match반환 값)

사진으로 정의한 이름 목록 중 해당 목록에 값을 나타내라는 명령. 예시로 3번째 이미지 목록을 타나냅


마지막으로 이미지를 선택하고 상단에 아까 지정한 이름을 입력해 줍니다.


이렇게 매칭을 시켜부면 A9에 해당하는 값을 상품명에서 몇번째에 있는지 검색한 다음 그 값을 사진 목록에서 해당하는 이미지를 보여주게 만들어 주는 것입니다.


아마 여기서 가장 이해해가 어려우신 것이 두 함수 사용하시는 것일 텐데요. 두 함수를 따로 따로 값을 입력해 보면 쉽게 이해하실 수 있으실 것입니다.

반응형

댓글

Designed by JB FACTORY