# Google Sheets 함수 마스터하기 (3/10): MATCH 함수 완벽 가이드 ## 이전 편 복습 2편에서는 HLOOKUP과 INDEX 함수를 배웠습니다. 오늘은 INDEX의 최고의 파트너인 **MATCH** 함수를 깊이 파헤쳐 보겠습니다. --- ## MATCH란? MATCH 함수는 범위에서 특정 값의 **상대적 위치(순번)**를 반환합니다. 값 자체가 아닌 **위치 번호**를 반환하는 것이 핵심입니다. ### 기본 문법 ``` =MATCH(검색값, 검색범위, [일치유형]) ``` | 인수 | 설명 | |------|------| | 검색값 | 찾고자 하는 값 | | 검색범위 | 단일 행 또는 단일 열 | | 일치유형 | 0=정확히, 1=이하 최대, -1=이상 최소 | --- ## 일치유형 상세 설명 ### 0: 정확히 일치 (가장 많이 사용) ``` =MATCH("사과", A1:A10, 0) ``` - "사과"와 **정확히 일치**하는 값의 위치 반환 - 정렬 필요 없음 - 못 찾으면 `#N/A` 에러 ### 1: 이하 최대값 (기본값) ``` =MATCH(85, A1:A10, 1) ``` - 85 **이하인 값 중 가장 큰 값**의 위치 반환 - 범위가 **오름차순 정렬**되어 있어야 함 - 구간 검색에 유용 ### -1: 이상 최소값 ``` =MATCH(85, A1:A10, -1) ``` - 85 **이상인 값 중 가장 작은 값**의 위치 반환 - 범위가 **내림차순 정렬**되어 있어야 함 - 거의 사용하지 않음 --- ## MATCH 실전 예제 ### 예제 1: 기본 위치 찾기 #### 데이터 (A1:A6) | 과일 | |------| | 사과 | | 바나나 | | 오렌지 | | 포도 | | 딸기 | #### "오렌지"의 위치 찾기 ``` =MATCH("오렌지", A1:A6, 0) ``` **결과**: 3 #### "포도"의 위치 찾기 ``` =MATCH("포도", A1:A6, 0) ``` **결과**: 4 --- ### 예제 2: 직원 목록에서 위치 찾기 #### 직원 데이터 (A1:D6) | 사번 | 이름 | 부서 | 직급 | |------|------|------|------| | E001 | 김철수 | 개발 | 대리 | | E002 | 이영희 | 마케팅 | 과장 | | E003 | 박민수 | 인사 | 사원 | | E004 | 정수진 | 개발 | 차장 | | E005 | 최동훈 | 영업 | 부장 | #### 사번 "E003"의 행 위치 ``` =MATCH("E003", A2:A6, 0) ``` **결과**: 3 #### "마케팅"부서의 열 위치 ``` =MATCH("부서", A1:D1, 0) ``` **결과**: 3 --- ### 예제 3: 점수 등급 구간 찾기 #### 등급 기준 (A1:B5, 오름차순 정렬 필수!) | 점수 | 등급 | |------|------| | 0 | F | | 60 | D | | 70 | C | | 80 | B | | 90 | A | #### 75점의 등급 위치 ``` =MATCH(75, A1:A5, 1) ``` **결과**: 3 (70점 이하 최대값인 70의 위치) 이 위치를 활용하면 등급 "C"를 찾을 수 있습니다: ``` =INDEX(B1:B5, MATCH(75, A1:A5, 1)) ``` **결과**: C --- ## 와일드카드 사용 MATCH도 VLOOKUP처럼 와일드카드를 지원합니다. ### * (별표): 0개 이상의 문자 ``` =MATCH("김*", A1:A10, 0) // "김"으로 시작하는 첫 번째 값 =MATCH("*팀", A1:A10, 0) // "팀"으로 끝나는 첫 번째 값 =MATCH("*마케팅*", A1:A10, 0) // "마케팅"을 포함하는 첫 번째 값 ``` ### ? (물음표): 정확히 1개의 문자 ``` =MATCH("김?수", A1:A10, 0) // "김철수", "김민수" 등 =MATCH("E00?", A1:A10, 0) // "E001", "E002" 등 ``` --- ## MATCH의 강력한 활용 ### 1. 열 번호 동적으로 찾기 VLOOKUP에서 열_인덱스를 하드코딩하는 대신 MATCH로 동적으로 찾을 수 있습니다. **기존 방식 (열 추가 시 수정 필요)**: ``` =VLOOKUP("E001", A:D, 3, FALSE) // 3번째 열: 부서 ``` **MATCH 활용 (열 추가에도 안전)**: ``` =VLOOKUP("E001", A:D, MATCH("부서", A1:D1, 0), FALSE) ``` --- ### 2. 마지막 항목 위치 찾기 #### 특정 값이 마지막으로 나타나는 위치 ``` =MAX(IF(A1:A100="개발", ROW(A1:A100)-ROW(A1)+1)) ``` Ctrl+Shift+Enter로 배열 수식 입력 (또는 ARRAYFORMULA 사용) --- ### 3. 중복 확인 #### 값이 처음 나타나는지 확인 ``` =MATCH(A2, A:A, 0)=ROW(A2) ``` 첫 등장이면 TRUE, 중복이면 FALSE --- ## MATCH 에러 처리 ### 기본 에러 처리 ``` =IFERROR(MATCH("없는값", A1:A10, 0), 0) ``` ### 값 존재 여부 확인 ``` =ISNUMBER(MATCH("찾을값", A1:A10, 0)) ``` TRUE면 존재, FALSE면 없음 --- ## MATCH vs VLOOKUP의 차이 | 특성 | MATCH | VLOOKUP | |------|-------|---------| | 반환값 | 위치(숫자) | 실제 값 | | 검색 방향 | 단일 행 또는 열 | 첫 번째 열만 | | 용도 | 위치 찾기 | 값 조회 | | 유연성 | INDEX와 조합 시 극대화 | 단독 사용 | --- ## 실무에서 MATCH가 빛나는 순간 ### 1. 헤더 위치가 바뀌는 경우 열 순서가 자주 바뀌는 리포트에서: ``` =INDEX(A2:Z2, MATCH("매출", A1:Z1, 0)) ``` 헤더 이름으로 찾으므로 열이 이동해도 OK --- ### 2. 조건부 서식에서 위치 활용 특정 값이 몇 번째인지에 따라 서식 적용: ``` =MATCH($A2, $A:$A, 0)<=3 ``` 상위 3개 항목만 강조 --- ### 3. 데이터 유효성 검사 드롭다운에서 선택한 항목이 목록에 있는지: ``` =ISNUMBER(MATCH(A1, 유효목록, 0)) ``` --- ### 4. 순위와 연동 ``` =MATCH(A2, SORT(A:A, 1, FALSE), 0) ``` 내림차순 정렬 시 순위 반환 --- ## 자주 하는 실수 ### 1. 일치유형 생략 ``` =MATCH("값", A1:A10) // 1이 기본값 - 의도치 않은 결과! =MATCH("값", A1:A10, 0) // 정확히 일치 - 권장 ``` **해결**: 정확한 일치를 원하면 반드시 `0` 명시 ### 2. 범위가 행과 열 모두 포함 ``` =MATCH("값", A1:D10, 0) // 에러! 2차원 범위 =MATCH("값", A1:A10, 0) // OK - 단일 열 =MATCH("값", A1:D1, 0) // OK - 단일 행 ``` **해결**: 단일 행 또는 단일 열만 지정 ### 3. 대소문자 구분 MATCH는 대소문자를 구분하지 않습니다. ``` =MATCH("ABC", A1:A10, 0) =MATCH("abc", A1:A10, 0) ``` 두 수식 모두 같은 결과 반환 --- ## 정리 | 상황 | 수식 | |------|------| | 정확한 위치 찾기 | `=MATCH(값, 범위, 0)` | | 구간 위치 찾기 | `=MATCH(값, 정렬범위, 1)` | | 와일드카드 검색 | `=MATCH("*키워드*", 범위, 0)` | | 존재 여부 확인 | `=ISNUMBER(MATCH(값, 범위, 0))` | | 에러 처리 | `=IFERROR(MATCH(값, 범위, 0), 0)` | | 열 번호 동적 찾기 | `=MATCH("헤더", 헤더행, 0)` | --- ## 핵심 포인트 1. **MATCH는 값이 아닌 위치를 반환**한다 2. **일치유형 0**을 가장 많이 사용 (정확한 일치) 3. **단일 행 또는 단일 열**에서만 검색 가능 4. **INDEX와 결합**하면 VLOOKUP보다 강력해진다 5. **와일드카드**로 부분 일치 검색 가능 --- ## 다음 편 예고 **[4편: INDEX-MATCH 콤보]**에서는 드디어 INDEX와 MATCH를 결합하여 VLOOKUP의 모든 한계를 극복하는 방법을 배웁니다. 이것이 진정한 조회 함수의 끝판왕입니다! --- *이 글이 도움이 되셨다면 시리즈의 다른 글도 확인해 보세요!*