3. 기타/게임

웹브라우저 게임 트라비안 방어 및 시터 운영 2/2, vlookup 과 이름

래빗 크리스 2009. 3. 15. 02:11

자, 지금까지 비밀창고 용량에 대해서는 그냥 넘어 왔는데.. 슬슬 설명이 되어야 겠다.
아래 그림에서 수식을 보면 vlookup 이라는 함수가 나와 있다.
vlookup 은 특정 셀의 값을 특정 범위에서 찾아 찾는 값이 동등하거나 가능범위에 대하여 필요한 수치를 돌려주는 함수다.
여기서 중요한 포인트가 몇개 있다. 먼저 '특정 셀의 값' 이라는 것을 살펴보자.
수식에는 vlookup 이 3개 병렬로 더하여져 있다. 비밀창고가 1개가 아닐 것이기 때문에 그렇다.
트라비안을 처음 시작하면 비밀창고가 1개 밖에 생성이 안되는 것으로 알기 쉬운데 그렇지 않다.
일단 하나의 비밀창고를 10 레벨까지 렙업하면 또 다른 비밀창고들을 계속 지을 수 있는 것이다.
그런데 건물을 지을 공간이 한정적이기 때문에 필요한 만큼만 비밀창고를 짓기 마련이고 2~3개가 적당하지 않나 싶다.



다시 본론으로 돌어가서 '특정 셀의 값' 이란 명제가 중요하다.
상기 그림에서 F17 셀의 vlookup 함수를 보면, 첫번째 파라미터에 "비밀창고"&F24 라고 되어 있다.
대개는 F24 이렇게만 사용하는데 여기서는 "비밀창고"& 라고 수식이 붙어 있는 것을 알 수 있다.
처음엔 신기하겠지만 이것도 '특정 셀의 값' 이란 명제를 알고 나면 신기할 일이 아니다.
'특정 셀' 이 아니라 그 셀의 '값' 이라는 것이 키포인트이다.
비밀창고에는 레벨이 있기 때문에 이를 반영하기 위해 F24:H27 까지의 셀값을 더하는 것이다.
여기서 '0' 이라 하지 않고 '00' 이라 한 것은 I3:I6 까지 유효성 검사를 할때 순서대로 정렬하기 위해서다.
유효성 검사에 대해서는 다음에 설명하겠다.
셀의 서식이 일반, 회계, 숫자 등이면 '10' 과 '2' 의 오름차순 순서가 '2' 다음에 '10' 이 맞다. 그런데 문자라면 그게 어렵다.
'비밀창고10' 과 '비밀창고2' 가 오름차순 정렬된다면 '비밀창고10' 이 '비밀창고2' 보다 앞에 나온다.
'비밀창고1', '비밀창고10', '비밀창고2', .. 이런 순서로 나오면 해당 내용을 쉽게 찾지 못하게 마련이다.
나중에 유효성 검사를 설명할때 다시 설명하고 여기서는 일단 넘어가자.
또, 하나.. vlookup 의 첫번째 파라미터에 해당하는 값이,
vlookup 의두번째 파라미터인 범위의 첫번째 칼럼에서 발견되어야 한다는 것.
이를테면 상기 수식에서 'Data1' 워크시트의 A4:A160 사이에서 "비밀창고10" 이 발견되어야 한다.
간혹 vlookup 의 두번째 파라미터인 범위에서 첫번째 칼럼이 다른 곳에 위치하는 경우가 있는데, 이러면 오류가 난다.

으음.. 또 본론으로 돌아가자. '특정 범위' 라는 명제도 중요하다.
상기 이미지에는 Data!$A$4:$K$160 를 사용하였다. 느낌표 '!' 앞의 'Data' 는 'Data' 워크시트를 가리킨다.
vlookup 함수의 특성상 비교되는 범위는 비교하는 특정 셀의 값의 위치가 변경되더라도 일정하게 유지되어야 한다.
따라서 절대좌표를 $A$4:$K$160 과 같이 사용한다.
그런데 이렇게 수식이 길어지면 한 눈에 들어오지도 않고, 수식에 오류가 생기기도 쉽고 나중에 수정하기도 만만치 않다.
이럴때 사용하는 것이 '이름' 기능이다.
아래 그림과 같이 범위를 잡아서 '이름 상자' 에 '_data1' 이라고 입력하면, "Data!$A$4:$K$160" 과 동일한 효력이 발생한다.
처음의 수식을 아래와 같이 바꿀 수 있는 것이다.
=VLOOKUP("비밀창고"&F24,_data1,8,FALSE)+VLOOKUP("비밀창고"&G24,_data1,8,FALSE)+VLOOKUP("비밀창고"&H24,_data1,8,FALSE)
아래 'Data' 워크시트는 모든 내용이 담겨 있지 않다. 필요한 분은 해당 제원을 덧붙여 기입해야 한다.



그런데, 이름의 범위가 변경된다면 어떻게 해야 할까..?
아래 그림과 같이 '삽입(I)', '이름(N)', '정의(D)...' 메뉴를 차례 클릭한다.



아래 그림과 같이 '이름 정의' 창이 뜨면 해당 이름을 클릭하고, '참조 대상(R)' 에서 필요한 범위를 조정하면 된다.



또, 다시 본론으로 돌아가자. vlookup 의 세번째 파라미터도 주의를 해야 한다.
만약 A, B, C 이렇게 세개의 칼럼이 vlookup 의 두번째 검색 범위라고 한다면,
A 칼럼 중에서 값을 가져오는 것이면 1이라고 입력해야 한다. B 는 2, C 는 3 이다.
이걸 헷갈려 하는 분들이 간혹 있다. 특히 프로그래머분들.. A 값을 가져올 때 0, B 는 1, C 는 2 라고 하면 곤란하다.
프로그램에선 배열이 0 에서 시작하기 때문에 종종 그런 실수를 범한다.
(프로그래머가 아닌 분들은 그냥 그런가 보다 하고 넘어가자)

vlookup 의 네번째 파라미터에 false 라고 하면 동일한 값을 발견할 때만 해당 값을 돌려주고 없으면 #N/A 를 돌려준다.
true 라고 하면 첫번째 파라미터가 포함되었을때 해당 값을 돌려준다.
여기서는 동일한 명칭이 나올때만 해당 값을 돌려주면 된다.

vlookup 도 설명하려면 한도 끝도 없는듯 하다.
트라비안 설명할때 조금 있으면 vlookup 에서 오류가 발생했을 때 어떻게 대처해야 하는지에 대해서도 설명하게다.
이번에는 여기까지..