# Google Sheets 함수 마스터하기 (2/10): HLOOKUP & INDEX 함수 ## 이전 편 복습 1편에서는 **VLOOKUP**의 세로 방향 조회를 배웠습니다. 오늘은 가로 방향 조회인 **HLOOKUP**과 범용 참조 함수 **INDEX**를 알아보겠습니다. --- ## Part 1: HLOOKUP 함수 ### HLOOKUP이란? HLOOKUP(Horizontal Lookup)은 테이블의 첫 번째 **행**에서 값을 검색하고, 같은 열의 다른 행에서 데이터를 반환합니다. ### 기본 문법 ``` =HLOOKUP(검색값, 범위, 행_인덱스, [정렬여부]) ``` | 인수 | 설명 | |------|------| | 검색값 | 첫 번째 행에서 찾을 값 | | 범위 | 검색할 테이블 범위 | | 행_인덱스 | 반환할 행 번호 (1부터 시작) | | 정렬여부 | FALSE=정확히 일치, TRUE=근사치 | --- ## HLOOKUP 실전 예제 ### 예제 1: 월별 매출 조회 #### 데이터 테이블 (A1:M3) | | 1월 | 2월 | 3월 | 4월 | 5월 | 6월 | 7월 | 8월 | 9월 | 10월 | 11월 | 12월 | |--|-----|-----|-----|-----|-----|-----|-----|-----|-----|------|------|------| | 매출 | 1000 | 1200 | 1500 | 1300 | 1400 | 1600 | 1800 | 1700 | 1500 | 1600 | 1900 | 2200 | | 비용 | 800 | 900 | 1000 | 950 | 1000 | 1100 | 1200 | 1150 | 1000 | 1100 | 1300 | 1500 | #### 특정 월의 매출 조회 ``` =HLOOKUP("3월", B1:M3, 2, FALSE) ``` **결과**: 1500 #### 특정 월의 비용 조회 ``` =HLOOKUP("3월", B1:M3, 3, FALSE) ``` **결과**: 1000 --- ### 예제 2: 환율 테이블 #### 환율 데이터 (A1:E2) | USD | EUR | JPY | GBP | CNY | |-----|-----|-----|-----|-----| | 1300 | 1420 | 8.7 | 1650 | 180 | #### 통화 코드로 환율 조회 ``` =HLOOKUP("EUR", A1:E2, 2, FALSE) ``` **결과**: 1420 --- ### 예제 3: 분기별 실적 대시보드 #### 분기 데이터 (A1:E4) | 지표 | Q1 | Q2 | Q3 | Q4 | |------|-----|-----|-----|-----| | 매출 | 5000 | 6000 | 5500 | 7000 | | 영업이익 | 500 | 700 | 600 | 900 | | 순이익 | 300 | 450 | 380 | 600 | #### 동적 분기별 조회 셀 A7에 "Q2"가 입력되어 있다면: ``` =HLOOKUP(A7, B1:E4, 2, FALSE) // 매출: 6000 =HLOOKUP(A7, B1:E4, 3, FALSE) // 영업이익: 700 =HLOOKUP(A7, B1:E4, 4, FALSE) // 순이익: 450 ``` --- ## VLOOKUP vs HLOOKUP | 특성 | VLOOKUP | HLOOKUP | |------|---------|---------| | 검색 방향 | 세로 (열) | 가로 (행) | | 검색 위치 | 첫 번째 열 | 첫 번째 행 | | 반환 위치 | n번째 열 | n번째 행 | | 일반적 용도 | 목록형 데이터 | 시계열 데이터 | ### 언제 무엇을 사용할까? - **VLOOKUP**: 직원 목록, 제품 테이블, 고객 정보 등 (데이터가 세로로 나열) - **HLOOKUP**: 월별/분기별 데이터, 환율표, 시간대별 데이터 등 (데이터가 가로로 나열) --- ## Part 2: INDEX 함수 ### INDEX란? INDEX는 범위에서 특정 위치의 값을 반환하는 함수입니다. 단독으로도 유용하지만, MATCH와 함께 사용하면 VLOOKUP/HLOOKUP의 강력한 대안이 됩니다. ### 기본 문법 ``` =INDEX(범위, 행번호, [열번호]) ``` | 인수 | 설명 | |------|------| | 범위 | 데이터가 있는 범위 | | 행번호 | 반환할 행의 위치 | | 열번호 | 반환할 열의 위치 (생략 시 1) | --- ## INDEX 실전 예제 ### 예제 1: 기본 위치 참조 #### 데이터 테이블 (A1:D5) | 이름 | 부서 | 직급 | 급여 | |------|------|------|------| | 김철수 | 개발 | 대리 | 4000 | | 이영희 | 마케팅 | 과장 | 5000 | | 박민수 | 인사 | 사원 | 3500 | | 정수진 | 개발 | 차장 | 6000 | #### 3행 2열의 값 가져오기 ``` =INDEX(A2:D5, 3, 2) ``` **결과**: 인사 (박민수의 부서) #### 2행 4열의 값 가져오기 ``` =INDEX(A2:D5, 2, 4) ``` **결과**: 5000 (이영희의 급여) --- ### 예제 2: 단일 열에서 INDEX 사용 급여 열(D2:D5)만 대상으로 할 때: ``` =INDEX(D2:D5, 2) ``` **결과**: 5000 (2번째 급여) ``` =INDEX(D2:D5, 4) ``` **결과**: 6000 (4번째 급여) --- ### 예제 3: 단일 행에서 INDEX 사용 첫 번째 직원의 정보(A2:D2)만 대상으로 할 때: ``` =INDEX(A2:D2, 1, 3) ``` **결과**: 대리 (김철수의 직급) --- ## INDEX의 강력한 기능 ### 1. 전체 행 또는 열 반환 행번호나 열번호에 0을 입력하면 전체 행 또는 열을 반환합니다. ``` =INDEX(A2:D5, 2, 0) // 2행 전체 반환 =INDEX(A2:D5, 0, 3) // 3열 전체 반환 ``` ### 2. 동적 범위 참조 ``` =SUM(INDEX(A2:D5, 0, 4)) // 4번째 열(급여) 전체 합계 ``` **결과**: 18500 --- ### 3. 마지막 값 가져오기 COUNTA와 함께 사용하여 마지막 데이터를 가져올 수 있습니다. ``` =INDEX(A:A, COUNTA(A:A)) ``` 이 수식은 A열에서 마지막으로 데이터가 있는 셀의 값을 반환합니다. --- ## 실무 활용: INDEX로 동적 범위 만들기 ### 동적 차트 범위 ``` =OFFSET(A1, 0, 0, COUNTA(A:A), 1) // 기존 방식 =INDEX(A:A, 1):INDEX(A:A, COUNTA(A:A)) // INDEX 방식 ``` ### 조건부 합계를 위한 범위 지정 ``` =SUM(INDEX(B2:B100, 1):INDEX(B2:B100, MATCH(9.99E+307, B2:B100))) ``` --- ## INDEX vs 직접 셀 참조 ### 직접 참조 ``` =D3 ``` ### INDEX 참조 ``` =INDEX(A1:D5, 3, 4) ``` **INDEX의 장점**: - 행/열 번호를 동적으로 변경 가능 - MATCH와 결합하여 유연한 조회 가능 - 배열 수식과 함께 사용 가능 --- ## HLOOKUP과 INDEX 조합 HLOOKUP 대신 INDEX를 사용하여 더 유연하게 조회할 수 있습니다. ### HLOOKUP 방식 ``` =HLOOKUP("3월", A1:M3, 2, FALSE) ``` ### INDEX 방식 (열 번호를 알 때) ``` =INDEX(A2:M2, 4) // 3월은 4번째 열 ``` ### INDEX + MATCH 방식 (다음 편에서 상세히) ``` =INDEX(A2:M2, MATCH("3월", A1:M1, 0)) ``` --- ## 에러 처리 ### IFERROR와 함께 사용 ``` =IFERROR(INDEX(A2:D5, 10, 1), "범위 초과") ``` ### IFNA와 함께 사용 ``` =IFNA(INDEX(A2:D5, MATCH("홍길동", A2:A5, 0), 2), "없음") ``` --- ## 정리 ### HLOOKUP 요약 | 사용 상황 | 수식 예시 | |----------|----------| | 기본 조회 | `=HLOOKUP("키", 범위, 행번호, FALSE)` | | 에러 처리 | `=IFERROR(HLOOKUP(...), "없음")` | | 다른 시트 | `=HLOOKUP("키", '시트'!범위, 행번호, FALSE)` | ### INDEX 요약 | 사용 상황 | 수식 예시 | |----------|----------| | 위치로 값 찾기 | `=INDEX(범위, 행, 열)` | | 열 전체 반환 | `=INDEX(범위, 0, 열번호)` | | 행 전체 반환 | `=INDEX(범위, 행번호, 0)` | | 마지막 값 | `=INDEX(열, COUNTA(열))` | --- ## 다음 편 예고 **[3편: MATCH 함수]**에서는 INDEX의 최고의 파트너인 MATCH 함수를 배웁니다. MATCH를 이해하면 INDEX-MATCH 콤보의 진정한 힘을 발휘할 수 있습니다! --- *이 글이 도움이 되셨다면 시리즈의 다른 글도 확인해 보세요!*