Menu

Hàm MATCH trong Excel: tìm vị trí của một giá trị

=MATCH(E2,A2:A6,0) trả về vị trí của E2 trong A2:A6: là 4 nếu đó là mục thứ tư. Kiểu khớp 0, 1 và -1, ký tự đại diện, khớp phân biệt chữ hoa chữ thường và cách kiểm tra một giá trị có nằm trong danh sách hay không.

Mọi bảng tính trên trang này đều trực tiếp: đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

=MATCH(E2,A2:A6,0) trả về vị trí của giá trị trong E2 bên trong A2:A6: 1 cho ô đầu tiên, 2 cho ô thứ hai, và cứ thế. Số 0 yêu cầu khớp chính xác. MATCH trả về một con số chứ không phải chính giá trị đó, nên hàm này thường đi cùng INDEX.

Vị trí của một sản phẩm trong danh sách
F2
ABCDEF
1ProductCategoryPriceLook forPosition
2AppleFruit$1.20Bread4
3PearFruit$1.50
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Bread là ô thứ tư của A2:A6, nên F2 hiện 4. Việc đếm bắt đầu từ ô đầu tiên của vùng, không phải từ hàng 1 của trang tính: đổi vùng thành A1:A6 thì kết quả thành 5. Gõ Kiwi vào E2 và MATCH trả về #N/A.

Cú pháp MATCH và các kiểu khớp

=MATCH(lookup_value, lookup_array, [match_type])
match_typeTìm gìDanh sách phải
0Giá trị đầu tiên bằng đúng lookup_value. Với văn bản, được dùng ký tự đại diện.theo thứ tự bất kỳ
1 hoặc bỏ trốngGiá trị lớn nhất nhỏ hơn hoặc bằng lookup_value.xếp tăng dần
-1Giá trị nhỏ nhất lớn hơn hoặc bằng lookup_value.xếp giảm dần

Mặc định là 1, không phải 0. Một hàm MATCH thiếu đối số thứ ba trên danh sách tên chưa sắp xếp sẽ không báo lỗi gì: nó trả về một vị trí có thể thuộc về hàng khác. Hãy luôn ghi số 0 mỗi khi bạn tìm văn bản, mã hay ID.

Khớp gần đúng: giá trị rơi vào mức nào

Với kiểu khớp 1, MATCH trả lời câu hỏi "thuộc mức nào": vị trí của ngưỡng cuối cùng mà giá trị đã đạt tới. Ở đây điểm 75 đã vượt qua 0, 60 và 70, nên nằm ở mức 3, xếp loại C.

Mức của một điểm số
E2
ABCDEF
1Min scoreGradeScoreBandGrade
20F753C
360D591F
470C905A
580B1005A
690A
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

59 vẫn dưới 60, nên thuộc mức 1 (F). 90 khớp đúng ngưỡng cuối cùng, còn 100 thì cao hơn ngưỡng đó, nên cả hai đều rơi vào mức 5 (A). Các ngưỡng phải luôn xếp tăng dần: nhờ vậy MATCH mới dừng đúng chỗ.

Kiểu khớp -1 là hình ảnh phản chiếu, dành cho danh sách xếp từ lớn đến nhỏ. Nó trả về vị trí của giá trị nhỏ nhất mà vẫn lớn hơn hoặc bằng giá trị cần tìm: với các cỡ {50;25;12;5} trong một cột, =MATCH(18,D2:D5,-1) trả về 2, tức cỡ 25, cỡ nhỏ nhất chứa được 18.

Ký tự đại diện và chữ hoa chữ thường

MATCH không phân biệt chữ hoa chữ thường, và với kiểu khớp 0, hàm chấp nhận ký tự đại diện (wildcard) * (bất kỳ chuỗi ký tự nào) và ? (đúng một ký tự). Để khớp có phân biệt hoa thường, so sánh danh sách bằng EXACT rồi tìm giá trị TRUE đầu tiên.

Ba cách khớp văn bản
E1
ABCDE
1ProductCategoryPriceStarts with "C"3
2AppleFruit$1.20Lower case "milk"5
3PearFruit$1.50Exactly "milk"#N/A
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

"C*" khớp với Carrot, vị trí 3. "milk" tìm thấy Milk ở vị trí 5, vì chữ hoa chữ thường bị bỏ qua. Phiên bản dùng EXACT so sánh từng tên với "milk" có phân biệt hoa thường, không thấy TRUE nào và trả về #N/A. Đổi A6 thành milk thì công thức trả về 5. Trong Excel 2019 trở về trước, xác nhận công thức EXACT bằng Ctrl+Shift+Enter (trên Mac là Cmd+Shift+Enter); trong Excel 2021 và Microsoft 365 chỉ cần Enter. Dấu ngã biến ký tự đại diện thành ký tự thường: "~*" tìm đúng một dấu sao.

Kiểm tra một giá trị có trong danh sách không

MATCH trả về một số khi tìm thấy giá trị và #N/A khi không tìm thấy. ISNUMBER đổi kết quả đó thành TRUE hoặc FALSE, thành một phép kiểm tra nhanh "có nằm trong danh sách không".

Mặt hàng nào đã đặt còn trong kho?
B2
ABCD
1OrderedIn stock?In stock
2PearYesApple
3KiwiNoPear
4MilkYesBread
5PlumNoMilk
6BreadYes
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Pear, Milk và Bread có trong D2:D5, nên hiện Yes. Kiwi và Plum hiện No. COUNTIF($D$2:$D$5,A2)>0 cho cùng kết quả; MATCH dừng ở lần khớp đầu tiên, còn COUNTIF đếm tất cả.

MATCH, XMATCH và INDEX

MATCH là một nửa của công thức dò tìm kinh điển =INDEX(C2:C6,MATCH(E2,A2:A6,0)), được giải thích ở trang INDEX và MATCH. Excel 2021 và Microsoft 365 có thêm XMATCH, hàm mặc định khớp chính xác, có thể tìm từ mục cuối ngược lên, và xử lý được "giá trị lớn hơn kế tiếp" mà không cần sắp xếp giảm dần. MATCH vẫn chạy ở mọi nơi, kể cả trong các tệp phải mở được bằng Excel 2019.

Luyện tập: vị trí của một nhân viên

Danh sách nhóm
F2
ABCDEF
1NameTeamStart yearNamePosition
2AnaSales2019Dev
3BenSupport2021
4CaraSales2018
5DevFinance2022
6EliSupport2020
7FayFinance2023
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đến lượt bạn: Trong F2, trả về vị trí của tên ở E2 trong danh sách ở cột A.

Câu hỏi thường gặp

Hàm MATCH trả về gì trong Excel?

Một vị trí, không phải một giá trị: =MATCH("Bread",A2:A6,0) trả về 4 khi Bread là ô thứ tư của A2:A6. Kết hợp với INDEX để lấy giá trị ở vị trí đó từ một cột khác.

Kiểu khớp 0, 1 và -1 khác nhau thế nào?

0 tìm giá trị khớp chính xác, danh sách theo thứ tự nào cũng được. 1 (mặc định) tìm giá trị lớn nhất nhỏ hơn hoặc bằng giá trị cần tìm và cần danh sách xếp tăng dần. -1 tìm giá trị nhỏ nhất lớn hơn hoặc bằng giá trị cần tìm và cần danh sách xếp giảm dần.

Hàm MATCH có phân biệt chữ hoa chữ thường không?

Không. =MATCH("milk",A2:A6,0) vẫn tìm thấy Milk. Để khớp có phân biệt hoa thường, dùng =MATCH(TRUE,EXACT(A2:A6,"milk"),0), công thức này cần Ctrl+Shift+Enter (trên Mac là Cmd+Shift+Enter) trong Excel 2019 trở về trước.

Làm sao dùng MATCH để kiểm tra một giá trị có trong danh sách không?

MATCH trả về #N/A khi không có giá trị đó, nên hãy kiểm tra xem kết quả có phải là số không: =ISNUMBER(MATCH(A2,$D$2:$D$5,0)) cho ra TRUE hoặc FALSE. Bọc nó trong IF để hiện chữ theo ý bạn.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu