vlookup을 사용하면서 의도하지 않던 결과가 나오는 경우가 생기기도 하고, 종종 그것을 모른 채 지나가기도 합니다. 그래서 몇 가지 주의해야 할 사항이 있는데요, vlookup에 대해서 어느 정도 사용할 줄 아시는 분들은 지난 번에 포스팅한 기본적인 내용보다 오늘 내용을 유심히 보시면 좋을 것 같습니다. 

vlookup함수의 마지막 인수 range_lookup을 FALSE로

마지막 인수인 range_lookup의 의미는 찾을 때 '정확하게 일치하는 것을' 찾을 거냐에 대한 설정 값입니다. FALSE면 정확하게 일치하는 것을 찾겠다라는 뜻이고, TRUE를 입력하거나 아무것도 입력하지 않으면 비슷하게 일치하는 것을 찾겠다 라는 뜻입니다.

컴퓨터가 인공지능도 아닌데, 비슷하게 일치하는 것을 어떻게 판단하지? 꼭 FALSE로 해야 하나? 등등의 의문이 드실텐데 아래 예제를 통해 설명 드리겠습니다.

[예제1] 우선 공란으로 두었습니다. 그런데 보시면 쏘나타의 가격은 2,800만원인데 vlookup 함수는 3,000만원을 찾아오고 있습니다. 실무에서 이런 일이 생기면 큰일 나겠죠?

이렇게 되는 이유는 lookup이라는 의미를 두고 생각해 보시면 될 것 같습니다. 즉,  '쏘나타'를 위에서 아래로 한칸씩 찾아 나갑니다.  '쏘나타'가 '그랜저' 보다는 가나다순으로 뒤에 있으므로 한칸 더 아래로 내려갑니다. 아 그런데 '아반떼'를 만나면 '쏘나타'보다 가나다순으로 뒤에 있는 녀석이기 때문에 찾기를 중단하고 '아반떼' 바로 위칸으로 돌아가고, 우측으로 이동하게 됩니다.

 이렇게 되는 이유는 찾을 영역의 데이타들이 오름차순으로 정렬되어 있을 거라고 가정한 상태로 lookup이 동작하기 때문입니다.


[예제2] 오름차순으로 데이타를 정렬한 경우 - 쏘나타와 아반떼의 순서가 예제1과 다름

이 경우에는 쏘나타의 가격이 2,800으로 정확하게 return되고 있습니다. 


[예제3] 내림차순으로도 해보았는데, 결과 값이 더욱 엉망이 되었습니다.


[예제4] Range_Lookup을 FALSE로 넣어주면 정확하게 쏘나타를 찾아가 값을 돌려줌


실무적으로는 찾을 영역의 데이타들이 오름차순인지 보장할 수 없는 경우들이 많이 있습니다. 다른 사람이 관리하던 데이타를 바로 써야 할 경우일 수도 있고, 그럴 시간이 없는 경우도 있고... 등등 

그러므로, 잘못된 값을 return하는 경우를 미연에 방지하기 위해서 꼭 range_lookup자리에 FALSE를 입력하기를 권장합니다. 

130106_Sample01.xlsx


AND