# Google Sheets 함수 마스터하기 (5/10): XLOOKUP - 차세대 조회 함수 ## 이전 편 복습 4편에서 INDEX-MATCH 콤보로 VLOOKUP의 한계를 극복하는 방법을 배웠습니다. 오늘은 이 모든 것을 하나로 통합한 **XLOOKUP**을 알아봅니다! --- ## XLOOKUP이란? XLOOKUP은 2022년에 Google Sheets에 추가된 최신 조회 함수입니다. VLOOKUP, HLOOKUP, INDEX-MATCH의 기능을 모두 포함하면서도 더 간단한 문법을 제공합니다. ### 기본 문법 ``` =XLOOKUP(검색값, 검색범위, 반환범위, [없을때값], [일치모드], [검색모드]) ``` | 인수 | 설명 | 기본값 | |------|------|--------| | 검색값 | 찾고자 하는 값 | (필수) | | 검색범위 | 검색할 범위 | (필수) | | 반환범위 | 반환할 범위 | (필수) | | 없을때값 | 못 찾았을 때 반환값 | #N/A | | 일치모드 | 일치 방식 | 0 (정확히) | | 검색모드 | 검색 방향 | 1 (처음부터) | --- ## XLOOKUP의 강점 ### 1. 기본 에러 처리 내장 **VLOOKUP + IFERROR**: ``` =IFERROR(VLOOKUP("E001", A:D, 2, FALSE), "없음") ``` **XLOOKUP**: ``` =XLOOKUP("E001", A:A, B:B, "없음") ``` 4번째 인수로 바로 처리! --- ### 2. 왼쪽으로 조회 가능 **INDEX-MATCH 필요 없음**: ``` =XLOOKUP("이영희", B:B, A:A) // 이름으로 사번 찾기 ``` 검색범위와 반환범위를 자유롭게 지정! --- ### 3. 열 인덱스 번호 불필요 **VLOOKUP**: ``` =VLOOKUP("E001", A:D, 3, FALSE) // 3번째 열 ``` **XLOOKUP**: ``` =XLOOKUP("E001", A:A, C:C) // C열 직접 지정 ``` 열 추가/삭제에도 안전! --- ## 실전 예제 ### 예제 데이터 (A1:D5) | 사번 | 이름 | 부서 | 급여 | |------|------|------|------| | E001 | 김철수 | 개발 | 5000000 | | E002 | 이영희 | 마케팅 | 4500000 | | E003 | 박민수 | 인사 | 4200000 | | E004 | 정수진 | 개발 | 5500000 | --- ### 예제 1: 기본 조회 #### 사번으로 이름 찾기 ``` =XLOOKUP("E002", A2:A5, B2:B5) ``` **결과**: 이영희 #### 사번으로 급여 찾기 ``` =XLOOKUP("E003", A2:A5, D2:D5) ``` **결과**: 4200000 --- ### 예제 2: 에러 처리 #### 값이 없을 때 "미등록" 표시 ``` =XLOOKUP("E999", A2:A5, B2:B5, "미등록") ``` **결과**: 미등록 #### 값이 없을 때 0 반환 ``` =XLOOKUP("E999", A2:A5, D2:D5, 0) ``` **결과**: 0 --- ### 예제 3: 왼쪽 방향 조회 #### 이름으로 사번 찾기 ``` =XLOOKUP("박민수", B2:B5, A2:A5, "없음") ``` **결과**: E003 #### 부서로 사번 찾기 ``` =XLOOKUP("개발", C2:C5, A2:A5) ``` **결과**: E001 (첫 번째 일치) --- ## 일치 모드 (5번째 인수) | 값 | 의미 | 설명 | |----|------|------| | 0 | 정확히 일치 | 기본값, 가장 많이 사용 | | 1 | 정확히 또는 다음 큰 값 | 오름차순 데이터에 유용 | | -1 | 정확히 또는 다음 작은 값 | 내림차순 데이터에 유용 | | 2 | 와일드카드 일치 | *, ? 사용 가능 | --- ### 일치 모드 예제 #### 구간별 등급 찾기 (일치모드 -1) | 점수 | 등급 | |------|------| | 90 | A | | 80 | B | | 70 | C | | 60 | D | | 0 | F | ``` =XLOOKUP(75, A2:A6, B2:B6, , -1) ``` **결과**: C (75점은 70 이상이므로) **참고**: 데이터가 내림차순이어야 -1이 올바르게 작동 --- #### 와일드카드 검색 (일치모드 2) ``` =XLOOKUP("김*", B2:B5, A2:A5, "없음", 2) ``` **결과**: E001 (김철수의 사번) ``` =XLOOKUP("*수", B2:B5, A2:A5, "없음", 2) ``` **결과**: E001 (김철수 - "수"로 끝나는 첫 번째) --- ## 검색 모드 (6번째 인수) | 값 | 의미 | 설명 | |----|------|------| | 1 | 처음부터 검색 | 기본값, 첫 번째 일치 반환 | | -1 | 끝에서부터 검색 | 마지막 일치 반환 | | 2 | 이진 검색 (오름차순) | 정렬된 대용량 데이터에 빠름 | | -2 | 이진 검색 (내림차순) | 정렬된 대용량 데이터에 빠름 | --- ### 검색 모드 예제 #### 마지막 일치 값 찾기 "개발" 부서 직원이 여러 명일 때 마지막 직원: ``` =XLOOKUP("개발", C2:C5, B2:B5, "없음", 0, -1) ``` **결과**: 정수진 (마지막 개발팀) 기본값(1)은 "김철수" (첫 번째 개발팀) --- ## 다중 열 반환 XLOOKUP의 특별한 기능: 여러 열을 한 번에 반환! ### 한 행 전체 반환 ``` =XLOOKUP("E002", A2:A5, B2:D5) ``` **결과**: 이영희, 마케팅, 4500000 (3개 셀에 분산) 이 수식 하나로 B, C, D열 값을 모두 가져옴! --- ## XLOOKUP 중첩 ### 2차원 조회 #### 가격 매트릭스 (A1:D4) | | 소형 | 중형 | 대형 | |--|------|------|------| | 기본 | 10000 | 15000 | 20000 | | 표준 | 20000 | 30000 | 40000 | | 프리미엄 | 35000 | 50000 | 65000 | F1에 "표준", F2에 "중형"이 있다면: ``` =XLOOKUP(F2, B1:D1, XLOOKUP(F1, A2:A4, B2:D4)) ``` **결과**: 30000 **작동 방식**: 1. 내부 XLOOKUP: "표준" 행 전체 반환 → {20000, 30000, 40000} 2. 외부 XLOOKUP: 그 결과에서 "중형" 열 찾기 → 30000 --- ## VLOOKUP, INDEX-MATCH, XLOOKUP 비교 ### 같은 작업을 세 가지 방식으로 **목표**: 사번 "E002"의 급여 찾기 #### VLOOKUP ``` =VLOOKUP("E002", A2:D5, 4, FALSE) ``` #### INDEX-MATCH ``` =INDEX(D2:D5, MATCH("E002", A2:A5, 0)) ``` #### XLOOKUP ``` =XLOOKUP("E002", A2:A5, D2:D5) ``` --- ### 기능 비교표 | 기능 | VLOOKUP | INDEX-MATCH | XLOOKUP | |------|---------|-------------|---------| | 왼쪽 조회 | ❌ | ✅ | ✅ | | 기본 에러 처리 | ❌ | ❌ | ✅ | | 열 번호 불필요 | ❌ | ✅ | ✅ | | 마지막 일치 | ❌ | 복잡함 | ✅ | | 다중 열 반환 | ❌ | ❌ | ✅ | | 2차원 조회 | ❌ | ✅ | ✅ | | 문법 간결성 | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | | 호환성 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | --- ## 실무 활용 패턴 ### 패턴 1: 동적 대시보드 드롭다운에서 선택한 직원의 모든 정보: ``` =XLOOKUP(선택된사번, 사번열, 전체데이터범위) ``` 한 수식으로 전체 행 반환! --- ### 패턴 2: 이전 값 참조 최근 주문 금액과 비교: ``` =XLOOKUP(오늘날짜-1, 날짜열, 금액열, 0, 0, -1) ``` 어제 또는 가장 최근 데이터 찾기 --- ### 패턴 3: 범위 기반 분류 | 매출 | 등급 | |------|------| | 0 | D | | 1000 | C | | 5000 | B | | 10000 | A | ``` =XLOOKUP(실제매출, 매출열, 등급열, "신규", -1) ``` --- ## 주의사항 ### 1. 호환성 확인 XLOOKUP은 비교적 새로운 함수입니다: - Google Sheets: 2022년부터 지원 - Excel: Microsoft 365, Excel 2021 이상 구버전 사용자와 공유 시 주의! ### 2. 배열 반환 이해 다중 열 반환 시 충분한 빈 셀이 필요합니다. ### 3. 빈 셀 처리 ``` =XLOOKUP("값", A:A, B:B, , 0) // 4번째 인수 생략 ``` 4번째 인수를 생략하면 #N/A 반환 --- ## 정리 | 상황 | 수식 | |------|------| | 기본 조회 | `=XLOOKUP(검색값, 검색열, 반환열)` | | 에러 처리 | `=XLOOKUP(검색값, 검색열, 반환열, "없음")` | | 왼쪽 조회 | `=XLOOKUP(값, 오른쪽열, 왼쪽열)` | | 와일드카드 | `=XLOOKUP("*키워드*", 검색열, 반환열, , 2)` | | 마지막 일치 | `=XLOOKUP(값, 검색열, 반환열, , 0, -1)` | | 다중 열 반환 | `=XLOOKUP(값, 검색열, 다중반환열)` | | 2차원 조회 | `=XLOOKUP(열값, 헤더행, XLOOKUP(행값, 헤더열, 데이터))` | --- ## 핵심 포인트 1. **XLOOKUP = VLOOKUP + INDEX-MATCH의 장점 통합** 2. **기본 에러 처리**가 내장되어 있음 3. **왼쪽 조회**도 간단하게 가능 4. **마지막 일치** 검색이 쉬움 5. **다중 열 반환**으로 효율적 6. **호환성 확인** 필요 (구버전 미지원) --- ## 무엇을 사용해야 할까? - **새 프로젝트**: XLOOKUP 권장 - **구버전 호환 필요**: VLOOKUP 또는 INDEX-MATCH - **복잡한 조건**: INDEX-MATCH (더 유연) - **빠른 작업**: 익숙한 것 사용 --- ## 다음 편 예고 **[6편: ARRAYFORMULA]**에서는 하나의 수식으로 전체 열에 함수를 적용하는 강력한 배열 수식을 배웁니다. 수백 개의 수식을 단 하나로! --- *이 글이 도움이 되셨다면 시리즈의 다른 글도 확인해 보세요!*