안녕하세요, 채랑이 아빠 프리아 입니다.
어제보단 조금 시간적 여유가 있네요 ㅎㅎㅎ. 어제 고객사 손님이 왔다가 갔지만, 특별한 이슈사항은 없었네요. 참 다행입니다 ㅎㅎㅎ.
오늘도 엑셀에 대한 팁을 하나 더 드릴껀데요.
Vlookup함수의 단점이 무엇인지 알고 계신가요? 아시는 분들은 다 아실텐데요… 그것은 바로 위에서부터 내용을 검색하기 때문에 동일한 데이터가 2개 이상인 경우 맨먼저 나오는 답만을 리턴한다는 것입니다.
아래와 같이 나오게 되겠죠
보시면 aaa라는 부품이 3번 반복해서 나오지만, Vlookup 명령어를 쓸경우 맨 위에 aaa에 대한 데이터를 리턴하게 됩니다.
일단 오늘 하고자 하는 것은 맨위가 아닌 맨 아래 데이터를 리턴하는 방법을 써보려고 합니다.
물론 이 경우에는 Vlookup 명령어가 아닌 Lookup 명령어를 써야 합니다.
Lookup 명령의 배치는 다음과 같습니다.
Lookup(lookup_value, lookup_vector, [result_vector]) 또는 Lookup(lookup_value, array)
이 두가지 방식입니다.
그런데 이중 가장 이해가 안될 부분은 vector이라는 문구이겠죠?
이과나 공대를 나오신 분들은 벡터라는 말을 한번씩은 다 들어보셨을 겁니다. 쉽게 말해 절대치의 값 정도로 이해하시면 될텐데요, 음 이것도 어렵낭….
조금 설명하기 애매한 개념이라서 설명이 좀 어렵긴 하네요.
일단 다르게 말씀드릴께요. 동일한 데이터가 있을 경우 맨위에꺼 하나 말고는 다 무시한다입니다.
이것도 어렵죠 ^^;;; 다르게 말하면 문자를 그대로 보지 않고 독특한 순위와 글자로 분석하여 별도의 언어로 구분한다입니다.
숫자는 쉽게 인식하지만 문자는 별도로 분석해 버린다는 거죠.
어렵죠? 네 압니다. ㅎㅎㅎㅎ 그래서 예를 들어 드릴께요.
자 Lookup 명령어를 써봤습니다. 그냥 보면 Vlookup과 동일하죠? 무엇이 문제인지 전혀 모르시겠죠? ^^
그럼 맨위의 데이터의 aaa를 삭제해 보겠습니다.
보이시죠? Vlookup 명령어는 바로 다음의 aaa 값을 찾아서 리턴하지만, Lookup 명령어는 답이 없다고 나와 버립니다. 즉 문자를 벡터화 시키면서 해당 내용을 찾지 못하는 현상이 발생하는 것입니다. 이번에는 aaa를 숫자로 변환하고 찾는 부품도 숫자로 변환해 보겠습니다.
자 aaa를 숫자로만 변환했을 뿐인데 Lookup 함수가 작동하죠? 숫자는 이미 벡터화 되어 있기 때문에 문자의 벡터화를 하더라도 그대로이기 때문입니다.
이것이 벡터입니다. 이래도 모르신다면 그냥 포기해야죠 모 ㅋㅋㅋ.
쉽게 말해 Lookup 명령어를 쓰려면 숫자로 치환해야 된다라고 생각하시면 됩니다.
자 자꾸 이상한데로 가는데요.. 오늘은 목표는 마지막 값을 찾는 것입니다.
명령어는 다음과 같이 사용하시면 됩니다.
=LOOKUP(2, 1/(lookup_array=lookup_value),output_array)
이것도 어려우시죠?
엑셀을 누가 만들었는지 몰라도 참 어렵게 만들어놨습니다.
맨 앞의 2는 벡터 2 이하의 숫자를 찾으라는 뜻이라고 보면 됩니다. 여기서 아실 부분은 2 이하의 숫자입니다. 즉, 자연수로 치면 1이나 2입니다.
여기서 왜 0이나 음수가 없냐고 물으신다면… 모 다음 구절에서 답을 찾아야죠.
“1/” 보이시죠? 1로 나누었을때 0이 나오는 숫자는 없습니다. 아시죠?
lookup_array=lookup_value를 쓰시면 리턴되는 것이 true 또는 false이며 벡터화 하면 1 또는 0입니다.
즉, 1 아니면 #DIV/0 라는 말이죠. 그러니 음수나 0은 절대 나타나지 않으니 신경쓰지 않으시면 됩니다.
앞의 수를 3이나 4로 바꾸어도 1, 2, 3, 4의 숫자를 찾기에 동일한 결과가 나옵니다. 즉 1보다 큰 아무숫자나 넣으셔도 된다는 뜻입니다.
원활한 설명을 위해 실행한 결과를 볼께요.
자 보시면, Lookup의 명령어는 맨 마지막 값을 찾아온 것이 보이시나요?
명령어를 그대로 풀이해서 나타내면 다음과 같아 집니다.
=LOOKUP(2,{1,#DIV/0,#DIV/0,#DIV/0,1,#DIV/0,#DIV/0,1},{3000,4000,3500,8000,3200,5000,7000,3800})
이렇게 해석하게 됩니다. 그중 가장 특이한 점은 중간의 1, #DIV/0 ….. 1 의 데이터를 앞에서부터 찾는 것이 아니라, 뒤에서부터 찾아서 올라간다는 점입니다.
이 특이점으로 인하여 맨 마지막 값을 불러올 수 있게 되는 것입니다.
좀 특이하죠? 어려울 수 있습니다.
그래서 그냥 쉽게 가장 마지막 값을 찾고 싶으시다면
=LOOKUP(2, 1/(검색범위=검색값),출력범위)
이렇게 명령어를 써야 한다고 이해하시면 되겠습니다.
위에 설명드린 것은 저처럼 특이하신 분들이 왜 저렇게 되는 거지? 3이나 4를 쓰면 다른 데이터가 나오나? 이런 궁금증을 가지실까봐 설명드린 것입니다.
그냥 하나의 팁을 가지고 간다고 생각하시면 되겠습니다.
자 오늘도 여기까지 하겠습니다.
재미있으셨기를 바래요 ^^
그럼 이만 물러납니당.