마이크로소프트 엑셀(Microsoft Excel)에는 검색, 참조와 관련된 함수가 많이 있습니다. 이들을 잘 활용하면 편리할 때가 많습니다. 그 중 몇 가지 예를 들어 보겠습니다.
Syntax: CHOOSE (index_num, value1, value2, ...)
Syntax: INDEX (array, row_num, col_num)
Syntax: INDEX (reference, row_num, col_num, area_num)
Syntax: MATCH (lookup_value, lookup_array, [match_type])
이때 match_type이 0이면 정확히 일치하는 값을 찾으라는 옵션이며, match_type이 1이거나 생략되면 lookup_value보다는 작지만 가장 가까운 값을, -1이면 lookup_value보다는 크지만 가장 가까운 값을 찾을 때 씁니다. 여기에서 중요한 점은, lookup_array는 반드시 오름차순으로 정렬되어 있어야 한다는 것입니다. 오름차순으로 정렬되어 있지 않을 때에는 제대로 된 결과를 반환하지 못할 수 있습니다.
Syntax: LOOKUP (lookup_value, lookup_vector, result_vector)
Syntax: LOOKUP (lookup_value, array)
Syntax: VLOOKUP (lookup_value, table_array, column_index_number, range_lookup)
Syntax: HLOOKUP (lookup_value, table_array, row_index_number, range_lookup)
그 이유를 보면 몇 가지가 있는데, 우선 VLOOKUP이나 HLOOKUP은 결과값을 선택할 열이나 행이 수식 내에 고정되어 있다는 점입니다. 이로 인해 오류를 일으킬 확률이 높아집니다. 또한 VLOOKUP이나 HLOOKUP의 table_array 중간에 열이나 행을 삽입하게 되면 수식을 다시 작성하거나 수정해야 하는 번거로움이 있습니다. 반면 INDEX-MATCH를 사용하면 그와 같은 문제가 없습니다. 다음으로 VLOOKUP이나 HLOOKUP은 첫 번째 행이나 열에서만 값을 검색할 수 있습니다. 하지만 INDEX-MATCH를 사용하면 그러한 제약도 없습니다. 게다가 VLOOKUP이나 HLOOKUP에 비해 처리해야 할 테이블이나 배열의 크기도 작아질 수 있습니다.
이처럼 INDEX 함수와 MATCH 함수를 함께 사용하면 VLOOKUP 함수나 HLOOKUP 함수가 할 수 있는 일을 모두 하면서도 더 유연하며 가벼운 업무 처리가 가능합니다.
CHOOSE
CHOOSE 함수는 최대 254개의 값 중 index에 해당하는 값을 반환하는 함수입니다.Syntax: CHOOSE (index_num, value1, value2, ...)
INDEX (array)
INDEX (array) 함수는 주어진 배열에서 행과 열을 제시하면 그 값을 반환하는 함수입니다.Syntax: INDEX (array, row_num, col_num)
INDEX (reference)
INDEX (reference) 함수는 앞서 살핀 index (array) 함수와 유사하지만 영역을 선택할 수 있는 옵션이 추가됩니다.Syntax: INDEX (reference, row_num, col_num, area_num)
MATCH
MATCH함수는 특정 배열(열이나 행)에서 주어진 아이템의 값을 검색해 해당 아이템의 상대 위치를 반환하는 함수입니다.Syntax: MATCH (lookup_value, lookup_array, [match_type])
이때 match_type이 0이면 정확히 일치하는 값을 찾으라는 옵션이며, match_type이 1이거나 생략되면 lookup_value보다는 작지만 가장 가까운 값을, -1이면 lookup_value보다는 크지만 가장 가까운 값을 찾을 때 씁니다. 여기에서 중요한 점은, lookup_array는 반드시 오름차순으로 정렬되어 있어야 한다는 것입니다. 오름차순으로 정렬되어 있지 않을 때에는 제대로 된 결과를 반환하지 못할 수 있습니다.
LOOKUP (vector)
LOOKUP (vector) 함수는 1행 혹은 1열짜리 벡터에서 원하는 값을 찾아 그에 대응하는 벡터에서 값을 반환해 주는 함수입니다.Syntax: LOOKUP (lookup_value, lookup_vector, result_vector)
LOOKUP (array)
LOOKUP (array) 함수는 배열에서 원하는 값을 찾아 값을 반환합니다. 이때 반환하는 값은 배열의 크기에 따라 달라집니다.Syntax: LOOKUP (lookup_value, array)
VLOOKUP
앞서 살핀 LOOKUP 함수의 예를 통해 유추할 수 있겠지만, VLOOKUP 함수는 배열의 특정한 열(row → vertical)에서 값을 검색하는 함수입니다.Syntax: VLOOKUP (lookup_value, table_array, column_index_number, range_lookup)
HLOOKUP
VLOOKUP 함수가 table_array에서 특정한 열의 값을 반환하는 것과 달리 HLOOKUP 함수는 table_array의 특정한 행의 값을 반환합니다. 사용법은 VLOOKUP 함수와 동일합니다.Syntax: HLOOKUP (lookup_value, table_array, row_index_number, range_lookup)
INDEX-MATCH
VLOOKUP이나 HLOOKUP도 나름의 장점이 있지만 그보다는 INDEX와 MATCH 함수를 함께 써서 VLOOKUP이나 HLOOKUP을 대체하기를 많이 권하고 있습니다. (Why INDEX MATCH is better than VLOOKUP, How to use INDEX MATCH instead of VLOOKUP)그 이유를 보면 몇 가지가 있는데, 우선 VLOOKUP이나 HLOOKUP은 결과값을 선택할 열이나 행이 수식 내에 고정되어 있다는 점입니다. 이로 인해 오류를 일으킬 확률이 높아집니다. 또한 VLOOKUP이나 HLOOKUP의 table_array 중간에 열이나 행을 삽입하게 되면 수식을 다시 작성하거나 수정해야 하는 번거로움이 있습니다. 반면 INDEX-MATCH를 사용하면 그와 같은 문제가 없습니다. 다음으로 VLOOKUP이나 HLOOKUP은 첫 번째 행이나 열에서만 값을 검색할 수 있습니다. 하지만 INDEX-MATCH를 사용하면 그러한 제약도 없습니다. 게다가 VLOOKUP이나 HLOOKUP에 비해 처리해야 할 테이블이나 배열의 크기도 작아질 수 있습니다.
이처럼 INDEX 함수와 MATCH 함수를 함께 사용하면 VLOOKUP 함수나 HLOOKUP 함수가 할 수 있는 일을 모두 하면서도 더 유연하며 가벼운 업무 처리가 가능합니다.
'과학과 기술 > 소프트웨어' 카테고리의 다른 글
OS X 주소록의 썸네일 캐시가 디스크 공간을 차지할 때 (0) | 2014.02.25 |
---|---|
gfxCardStatus - 맥북 프로 그래픽 카드 수동 전환 (2) | 2010.07.16 |
Chat Log Converter (0) | 2010.07.07 |
OS 시장 점유율 (2) | 2010.05.07 |
Thoughts on Flash (by Steve Jobs) (0) | 2010.04.30 |
OS X 10.6 스노우 레퍼드(Snow Leopard)의 폰트 스무딩(font smoothing) (0) | 2010.04.04 |
VcmIAlzMgr.exe - CPU 사용률을 높이는 나쁜 소니(Sony)! (0) | 2009.12.09 |
Microsoft Windows를 위한 Exposé, DExposE2 (0) | 2009.11.24 |
Windows Vista에서 텔넷(Telnet) 서비스 사용하기 (0) | 2009.11.06 |
스노우 레퍼드로 업그레이드! (0) | 2009.09.10 |