=MATCH(E2,A2:A6,0)은 A2:A6 안에서 E2 값의 위치를 반환합니다. 첫 번째 셀이면 1, 두 번째 셀이면 2와 같은 식입니다. 0은 정확히 일치를 요청합니다. MATCH는 값 자체가 아니라 숫자를 반환하므로 보통 INDEX와 함께 씁니다.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Look for | Position | |
| 2 | Apple | Fruit | $1.20 | Bread | 4 | |
| 3 | Pear | Fruit | $1.50 | |||
| 4 | Carrot | Vegetable | $0.80 | |||
| 5 | Bread | Bakery | $2.40 | |||
| 6 | Milk | Dairy | $1.10 |
Bread는 A2:A6의 네 번째 셀이므로 F2에 4가 나옵니다. 위치는 시트의 1행이 아니라 범위의 첫 셀부터 셉니다. 범위를 A1:A6으로 바꾸면 답은 5가 됩니다. E2에 Kiwi를 입력하면 MATCH가 #N/A를 반환합니다.
MATCH 구문과 일치 유형
=MATCH(lookup_value, lookup_array, [match_type])
| match_type | 찾는 값 | 목록 조건 |
|---|---|---|
0 | lookup_value와 정확히 같은 첫 번째 값. 텍스트에는 와일드카드 사용 가능. | 순서 상관없음 |
1 또는 생략 | lookup_value보다 작거나 같은 값 중 가장 큰 값. | 오름차순 정렬 |
-1 | lookup_value보다 크거나 같은 값 중 가장 작은 값. | 내림차순 정렬 |
기본값은 0이 아니라 1입니다. 세 번째 인수 없는 MATCH는 정렬되지 않은 이름 목록에서도 아무 경고 없이 다른 행의 것일 수도 있는 위치를 반환합니다. 텍스트, 코드, ID를 조회할 때는 매번 0을 쓰세요.
유사 일치: 값이 어느 구간에 속하는지
일치 유형 1을 쓰면 MATCH는 "어느 구간인가"에 답합니다. 값이 도달한 마지막 기준값의 위치입니다. 여기서 75점은 0, 60, 70을 넘었으므로 3구간, 등급 C입니다.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Min score | Grade | Score | Band | Grade | |
| 2 | 0 | F | 75 | 3 | C | |
| 3 | 60 | D | 59 | 1 | F | |
| 4 | 70 | C | 90 | 5 | A | |
| 5 | 80 | B | 100 | 5 | A | |
| 6 | 90 | A |
59는 아직 60 미만이라 1구간(F)입니다. 90은 마지막 기준값과 정확히 일치하고 100은 그보다 크므로 둘 다 5구간(A)에 들어갑니다. 기준값은 오름차순을 유지해야 합니다. 그래야 MATCH가 올바른 곳에서 멈춥니다.
일치 유형 -1은 큰 값부터 작은 값 순으로 정렬된 목록을 위한, 거울에 비친 반대입니다. 찾는 값보다 크거나 같은 값 중 가장 작은 값의 위치를 반환합니다. 열에 크기 {50;25;12;5}가 있다면 =MATCH(18,D2:D5,-1)은 18이 들어가는 가장 작은 크기인 25의 위치 2를 반환합니다.
와일드카드와 대소문자
MATCH는 대소문자를 무시하고, 일치 유형 0에서는 와일드카드 *(아무 문자열)와 ?(정확히 한 글자)를 받아들입니다. 대소문자를 구분하려면 목록을 EXACT로 비교하고 첫 번째 TRUE를 찾으세요.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Product | Category | Price | Starts with "C" | 3 |
| 2 | Apple | Fruit | $1.20 | Lower case "milk" | 5 |
| 3 | Pear | Fruit | $1.50 | Exactly "milk" | #N/A |
| 4 | Carrot | Vegetable | $0.80 | ||
| 5 | Bread | Bakery | $2.40 | ||
| 6 | Milk | Dairy | $1.10 |
"C*"는 Carrot과 일치해 위치 3을 냅니다. 대소문자를 무시하므로 "milk"는 위치 5의 Milk를 찾습니다. EXACT 버전은 각 이름을 대소문자까지 "milk"와 비교해 TRUE를 찾지 못하고 #N/A를 반환합니다. A6을 milk로 바꾸면 5를 반환합니다. Excel 2019 이하에서는 EXACT 수식을 Ctrl+Shift+Enter(Mac에서는 Cmd+Shift+Enter)로 확정하세요. Excel 2021과 Microsoft 365에서는 Enter로 충분합니다. 물결표를 붙이면 와일드카드가 문자 그대로 쓰입니다. "~*"는 실제 별표를 찾습니다.
값이 목록에 있는지 확인하기
MATCH는 값을 찾으면 숫자를, 찾지 못하면 #N/A를 반환합니다. ISNUMBER가 이것을 TRUE나 FALSE로 바꾸므로 "목록에 있나"를 빠르게 검사할 수 있습니다.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Ordered | In stock? | In stock | |
| 2 | Pear | Yes | Apple | |
| 3 | Kiwi | No | Pear | |
| 4 | Milk | Yes | Bread | |
| 5 | Plum | No | Milk | |
| 6 | Bread | Yes |
Pear, Milk, Bread는 D2:D5에 있으므로 Yes가 나옵니다. Kiwi와 Plum은 No입니다. COUNTIF($D$2:$D$5,A2)>0도 같은 답을 줍니다. MATCH는 처음 찾은 곳에서 멈추고, COUNTIF는 전부 셉니다.
MATCH, XMATCH, INDEX
MATCH는 전형적인 조회 수식 =INDEX(C2:C6,MATCH(E2,A2:A6,0))의 절반이며, INDEX와 MATCH 페이지에서 설명합니다. Excel 2021과 Microsoft 365에는 XMATCH가 추가되었는데, 기본값이 정확히 일치이고, 마지막 항목부터 위로 검색할 수 있으며, 내림차순 정렬 없이 "다음으로 큰 값"을 처리합니다. MATCH는 Excel 2019에서 열어야 하는 파일을 포함해 어디서나 여전히 동작합니다.
연습: 직원의 위치
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Name | Team | Start year | Name | Position | |
| 2 | Ana | Sales | 2019 | Dev | ||
| 3 | Ben | Support | 2021 | |||
| 4 | Cara | Sales | 2018 | |||
| 5 | Dev | Finance | 2022 | |||
| 6 | Eli | Support | 2020 | |||
| 7 | Fay | Finance | 2023 |
직접 해 보세요: F2에서 E2에 있는 이름이 A열 목록에서 몇 번째인지 반환하세요.
자주 묻는 질문
엑셀 MATCH는 무엇을 반환하나요?
값이 아니라 위치를 반환합니다. Bread가 A2:A6의 네 번째 셀이면 =MATCH("Bread",A2:A6,0)은 4를 반환합니다. INDEX와 함께 쓰면 다른 열에서 그 위치의 값을 가져올 수 있습니다.
일치 유형 0, 1, -1은 무엇이 다른가요?
0은 순서와 상관없이 정확히 일치하는 값을 찾습니다. 1(기본값)은 찾는 값보다 작거나 같은 값 중 가장 큰 값을 찾으며 목록이 오름차순으로 정렬되어 있어야 합니다. -1은 찾는 값보다 크거나 같은 값 중 가장 작은 값을 찾으며 목록이 내림차순으로 정렬되어 있어야 합니다.
MATCH는 대소문자를 구분하나요?
구분하지 않습니다. =MATCH("milk",A2:A6,0)은 Milk를 찾습니다. 대소문자를 구분하려면 =MATCH(TRUE,EXACT(A2:A6,"milk"),0)을 쓰세요. Excel 2019 이하에서는 Ctrl+Shift+Enter(Mac에서는 Cmd+Shift+Enter)가 필요합니다.
MATCH로 값이 목록에 있는지 어떻게 확인하나요?
값이 없으면 MATCH가 #N/A를 반환하므로, 숫자를 반환했는지 검사합니다. =ISNUMBER(MATCH(A2,$D$2:$D$5,0))은 TRUE나 FALSE를 냅니다. 원하는 텍스트를 보여 주려면 IF로 감싸세요.