엑셀 VLOOKUP 두번째 값 구하기 공식
엑셀 VLOOKUP함수 두번째 값 구하기 목차 바로가기
함수 공식
{ =INDEX($출력범위,SMALL(IF($찾을값=$찾을범위,ROW($찾을범위)-ROW($시작셀)+1),N번째)) }
본 공식은 배열수식이므로 Microsoft 365 이전버전 사용자는 Ctrl + Shift + Enter 로 입력합니다.
인수 설명

| 인수 | 설명 |
| 출력범위 | VLOOKUP 함수로 출력할 값이 입력된 범위입니다. |
| 찾을값 | VLOOKUP 함수로 찾을 값입니다. |
| 찾을범위 | 찾을값이 입력된 범위입니다. |
| 시작셀 | 찾을 범위(또는 출력범위)의 시작셀입니다. |
| N번째 | 몇번째 있는 값을 찾을 것인지 숫자로 입력합니다. (예: 1, 2, 3 ... ) |
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [엑셀공식] 엑셀 VLOOKUP 함수 2번째 값 구하기예제파일
호환성
운영체제 호환성 Windows 버전 모든 엑셀 버전에서 사용 가능합니다. Mac 버전 모든 엑셀 버전에서 사용 가능합니다. 사용된 기초 함수
엑셀 VLOOKUP함수 두번째 값 구하기 공식 알아보기
공식 설명
본 공식은 VLOOKUP 함수로 n 번째 있는 값을 검색하는 VLOOKUP 함수 두번째 값 구하기 공식입니다. 찾을값의 중복된 개수에 상관없이 2번째, 3번째.. 이상의 값도 검색가능합니다. 본 공식은 배열수식이므로 Microsoft 365 이전버전 사용자는 Ctrl + Shift + Enter로 수식을 입력해야 합니다.
VLOOKUP 함수로 여러개의 값을 반환하려면 VLOOKUP 여러개 값 출력하기 공식을 사용합니다.
공식의 동작원리
- 출력범위의 개수만큼 1부터 증가하는 순번을 반환합니다. (ROW 함수 사용)
=ROW(D8:D12)-ROW(D8)+1
={8,9,10,11,12}-8+1
={1,2,3,4,5} - 찾을범위의 값이 찾을값과 일치할 경우 순번을 반환합니다. (IF 함수 사용)
=IF("사과"={"사과","배","사과","귤","사과"},ROW(D8:D12)-ROW(D8)+1)
=IF("사과"={"사과","배","사과","귤","사과"},{1,2,3,4,5})
={1,FALSE,3,FALSE,5} - 반환된 순번에서 n번째로 작은 값을 반환합니다. (SMALL 함수 사용)
=SMALL(IF($찾을값=$찾을범위,ROW($찾을범위)-ROW($시작셀)+1),N번째)
=SMALL({1,FALSE,3,FALSE,5},2)
=3 '순번에서 2번째로 작은 값인 3을 반환합니다. - 출력범위의 n값을 반환합니다. (INDEX 함수 사용)
=INDEX($출력범위,SMALL(IF($찾을값=$찾을범위,ROW($찾을범위)-ROW($시작셀)+1),N번째))
=INDEX({10,20,30,40,50},3)
=30 '출력범위의3번째 값인 30을 반환합니다.
- 출력범위의 개수만큼 1부터 증가하는 순번을 반환합니다. (ROW 함수 사용)

추가 질문이 있는데,
찾을범위의 이름이 <정현수 임규리 김예진>, <정현수 김예진> 이런 식으로 섞여 있어도
찾을값으로 <정현수>를 넣으면 찾을범위 이름 내에서 정현수가 포함된 모든 결과값이 나오도록 하는 방법은 없을까요?
와일드카드 "*"를 써서, 아래 처럼 넣으면 에러가 뜨더라구요 ㅠ
{ =INDEX($출력범위,SMALL(IF("*"&$찾을값&"*"=$찾을범위,ROW($찾을범위)-ROW($시작셀)+1),N번째)) }
ISNUMBER/SEARCH 함수를 활용해보세요 ^^
{ =INDEX($출력범위,SMALL(IF(ISNUMBER(SEARCH(찾을값,찾을범위)),ROW($찾을범위)-ROW($시작셀)+1),N번째)) }
https://www.oppadu.com/if-%ED%95%A8%EC%88%98-%ED%8A%B9%EC%A0%95-%EB%AC%B8%EC%9E%90-%ED%8F%AC%ED%95%A8/
혹시 한 시트내에서가 아니라 다른 엑셀에 있는 자료를 가져올때는 안되는걸까요~??
혹시 방법이 있을까요?
다른 엑셀파일에서 불러오는 것도 가능합니다.^^
다만 다른 엑셀파일에서 불러올 경우에는 해당 엑셀파일이 반드시 실행된 상태여야 합니다.
이게, 가지는 의미는 알겠는데, 구조를 이해하기 어려워 문의드립니다.
=ROW(D8:D12)-ROW(D8)+1
={8,9,10,11,12}-8+1
={1,2,3,4,5}
-> D8~D12 구간에서 ROW 함수를 쓰면 8이 반환이 될텐데, 거기에 D8+1 ROW함수를 해서 더한 값을 빼면
결국 8-8+1의 행의 값을 가져오게 될텐데,
저걸 단순하게 생각해보니, 그냥, 그냥 범위 내에서 값을 반환하면 되는 것 아닐까? 왜 전체 범위 - (전체 범위)+1을 하지? 라는 의문이 드는데,
아무래도 제가, 이해력이 부족한가 봅니다.
설명 좀 부탁드립니다 ㅠㅠ
+1 을 해주지 않을 경우, 첫번째 값이 1-1 = 0 이 반환되어 오류가 발생하기 때문에, 1-1+1 = 1 로 첫째 행을 받아오도록 1을 더해줍니다.
답변이 도움이 되셨길 바랍니다. 감사합니다!