=XMATCH(E2,A2:A6) trả về vị trí của E2 trong A2:A6: 1 cho ô đầu tiên, 2 cho ô thứ hai. Khác với MATCH, hàm này tìm khớp chính xác trừ khi bạn yêu cầu khác. XMATCH cần Excel 2021 hoặc Microsoft 365; ở các phiên bản cũ hơn, hãy dùng MATCH(E2,A2:A6,0).
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Product | Category | Price | Look for | Position | |
| 2 | Apple | Fruit | $1.20 | Carrot | 3 | |
| 3 | Pear | Fruit | $1.50 | |||
| 4 | Carrot | Vegetable | $0.80 | |||
| 5 | Bread | Bakery | $2.40 | |||
| 6 | Milk | Dairy | $1.10 |
Carrot là mục thứ ba, nên F2 hiện 3. Gõ Kiwi thì hàm trả về #N/A. Như mọi hàm tra cứu trong Excel, XMATCH không phân biệt chữ hoa chữ thường.
Cú pháp XMATCH
=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])
| Đối số | Giá trị |
|---|---|
match_mode | 0 chính xác (mặc định), -1 chính xác hoặc nhỏ hơn liền kề, 1 chính xác hoặc lớn hơn liền kề, 2 khớp theo ký tự đại diện |
search_mode | 1 từ phần tử đầu (mặc định), -1 từ phần tử cuối, 2 tìm kiếm nhị phân tăng dần, -2 tìm kiếm nhị phân giảm dần |
Các chế độ nhị phân nhanh hơn trên danh sách rất lớn đã sắp xếp và trả về vị trí sai trên danh sách chưa sắp xếp. Các chế độ còn lại dùng được với dữ liệu theo bất kỳ thứ tự nào.
Nhỏ hơn hoặc lớn hơn liền kề, không cần sắp xếp
match_mode 1 tìm giá trị nhỏ nhất lớn hơn hoặc bằng giá trị cần tìm. Cách này trả lời câu hỏi "hộp nhỏ nhất vừa chứa" ngay cả khi các kích thước được liệt kê không theo thứ tự nào. Với MATCH, bạn sẽ cần danh sách được sắp xếp từ lớn đến nhỏ.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Box | Holds (liters) | Item (liters) | 18 | |
| 2 | S | 5 | Position | 4 | |
| 3 | XL | 50 | Box | L | |
| 4 | M | 12 | |||
| 5 | L | 25 |
Các kích thước chứa được 18 lít là 25 và 50, và nhỏ hơn là 25, mục thứ tư, hộp L. Đổi E1 thành 12 để thấy khớp chính xác (M) hoặc thành 40 để được XL. match_mode -1 thì ngược lại: giá trị lớn nhất nhỏ hơn hoặc bằng giá trị cần tìm, đúng quy tắc của bậc thuế và mức hoa hồng. XLOOKUP có hai chế độ tương tự và trả về giá trị trực tiếp.
Tìm từ phần tử cuối
search_mode -1 bắt đầu từ dưới lên, nên XMATCH trả về vị trí của lần khớp cuối cùng. Vị trí vẫn được đếm từ đầu vùng dữ liệu.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Date | Customer | Amount | Customer | Ben | |
| 2 | 2026-03-02 | Ben | 120 | Last position | 5 | |
| 3 | 2026-03-05 | Ana | 80 | Last date | 2026-03-20 | |
| 4 | 2026-03-09 | Ben | 45 | First position | 1 | |
| 5 | 2026-03-12 | Cara | 200 | |||
| 6 | 2026-03-20 | Ben | 60 | |||
| 7 | 2026-03-24 | Ana | 95 |
Ben xuất hiện ở các vị trí 1, 3 và 5. Tìm xuôi trả về 1 và tìm ngược trả về 5, đơn hàng của Ben ngày 2026-03-20. Trước khi có XMATCH, muốn lấy vị trí cuối cùng phải dùng một mẹo mảng: =MATCH(2,1/(B2:B7=F1)).
Ký tự đại diện cần match_mode 2
Với match_mode 2, * đại diện cho chuỗi ký tự bất kỳ và ? cho đúng một ký tự. Ở các chế độ khác, chúng là ký tự bình thường, trong khi MATCH coi chúng là ký tự đại diện mỗi khi match_type là 0.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Product | Pattern | Position | |
| 2 | Green tea | *coffee | 2 | |
| 3 | Iced coffee | ?lack* | 4 | |
| 4 | Coffee beans | |||
| 5 | Black tea | |||
| 6 | Orange juice |
*coffee (bất cứ thứ gì kết thúc bằng "coffee") khớp với Iced coffee ở vị trí 2, và ?lack* khớp với Black tea ở vị trí 4. Coffee beans không khớp với *coffee, vì mẫu không có * ở cuối. Không có match_mode 2, cùng mẫu đó được tìm như văn bản nguyên dạng, nên trong Excel công thức này trả về #N/A:
=XMATCH("*coffee", A2:A6) #N/A: no cell is literally "*coffee"
=XMATCH("*coffee", A2:A6, 2) 2
XMATCH so với MATCH
| MATCH | XMATCH | |
|---|---|---|
| Mặc định khi bỏ trống chế độ | Gần đúng (1), dữ liệu phải được sắp xếp | Chính xác |
| Giá trị nhỏ hơn liền kề | 1, dữ liệu sắp xếp tăng dần | -1, thứ tự bất kỳ |
| Giá trị lớn hơn liền kề | -1, dữ liệu sắp xếp giảm dần | 1, thứ tự bất kỳ |
| Ký tự đại diện | Luôn bật với 0 | Chỉ với match_mode 2 |
| Lần khớp cuối cùng | Không | search_mode -1 |
| Phiên bản | Tất cả | Excel 2021 và Microsoft 365 |
Dấu bị đảo ngược: -1 của MATCH tìm giá trị lớn hơn liền kề, còn -1 của XMATCH tìm giá trị nhỏ hơn liền kề. Khi chuyển MATCH(E2,A2:A6,0) sang XMATCH, hãy bỏ số 0; khi chuyển một MATCH khớp gần đúng, hãy đảo dấu, và thứ tự sắp xếp không còn quan trọng nữa. Trang MATCH trình bày hàm cũ hơn này.
Luyện tập: vị trí của đơn hàng cuối cùng
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Date | Customer | Amount | Customer | Ben | |
| 2 | 2026-03-02 | Ben | 120 | Last position | ||
| 3 | 2026-03-05 | Ana | 80 | |||
| 4 | 2026-03-09 | Ben | 45 | |||
| 5 | 2026-03-12 | Cara | 200 | |||
| 6 | 2026-03-20 | Ben | 60 | |||
| 7 | 2026-03-24 | Ana | 95 |
Đến lượt bạn: Trong F2, trả về vị trí đơn hàng cuối cùng của khách hàng ở F1.
Câu hỏi thường gặp
MATCH và XMATCH khác nhau thế nào?
XMATCH mặc định khớp chính xác (MATCH mặc định khớp gần đúng), tìm được giá trị nhỏ hơn hoặc lớn hơn liền kề mà không cần dữ liệu đã sắp xếp, có thể tìm từ phần tử cuối ngược lên, và chỉ coi * và ? là ký tự đại diện khi bạn yêu cầu bằng match_mode 2. Hàm này cần Excel 2021 hoặc Microsoft 365.
Tìm lần xuất hiện cuối cùng bằng XMATCH như thế nào?
Đặt search_mode, đối số thứ tư, là -1: =XMATCH("Ben",B2:B7,0,-1) trả về vị trí của Ben cuối cùng trong B2:B7. Vị trí vẫn được đếm từ đầu vùng dữ liệu.
XMATCH trả về gì nếu không có giá trị nào khớp?
#N/A, giống MATCH. Bọc nó trong IFNA để hiển thị nội dung khác: =IFNA(XMATCH(E2,A2:A6),"Not in list").
XMATCH có thay được MATCH bên trong INDEX không?
Có. =INDEX(C2:C6,XMATCH(E2,A2:A6)) hoạt động như INDEX với MATCH(E2,A2:A6,0), mà không có số 0 nào để quên. Hãy dùng MATCH nếu tệp phải mở được trên Excel 2019 hoặc cũ hơn.