Hàm INDEX MATCH trong Excel: tra cứu trái, hai chiều
Kết hợp INDEX và MATCH để tra cứu sang trái, tra cứu hai chiều theo dòng và cột, tra cứu nhiều điều kiện — linh hoạt hơn VLOOKUP, có ví dụ bảng lương, bảng giá.
INDEX + MATCH là cặp hàm tra cứu “vạn năng” trong Excel: tra được sang trái, tra theo cả dòng lẫn cột, không bị lệch khi chèn thêm cột và chạy trên mọi phiên bản Excel lẫn Google Sheets. Công thức mẫu: =INDEX(cột_kết_quả, MATCH(giá_trị_tìm, cột_tìm, 0)). Nếu bạn đã quen VLOOKUP, đây là bước tiếp theo nên học.
=INDEX(C2:C100;MATCH(G2;A2:A100;0)).1. Hai hàm thành phần
MATCH: tìm vị trí
=MATCH(giá_trị_tìm, vùng_tìm, kiểu_khớp)
| Đối số | Ý nghĩa |
|---|---|
giá_trị_tìm | Mã nhân viên, mã hàng… cần tìm |
vùng_tìm | Một cột (hoặc một dòng) chứa giá trị đó |
kiểu_khớp | 0 = khớp chính xác (dùng hầu hết trường hợp); 1 = tìm gần đúng, vùng phải sắp xếp tăng dần |
MATCH trả về số thứ tự: =MATCH("NV03",A2:A100,0) ra 3 nếu NV03 ở ô A4.
INDEX: lấy giá trị theo vị trí
=INDEX(vùng, số_dòng, [số_cột])
=INDEX(C2:C100,3) lấy ô thứ 3 của vùng, tức C4. Ghép hai hàm lại: MATCH tìm vị trí, INDEX lấy kết quả.
2. Tra cứu cơ bản và tra cứu sang trái
Bảng nhân viên: A = Họ tên, B = Mã NV, C = Phòng ban, D = Lương. Ô G2 nhập mã NV, cần lấy lương:
=INDEX($D$2:$D$100,MATCH(G2,$B$2:$B$100,0))
Cần lấy họ tên — cột A nằm bên trái cột mã. VLOOKUP chịu thua, còn INDEX MATCH chỉ việc đổi cột kết quả:
=INDEX($A$2:$A$100,MATCH(G2,$B$2:$B$100,0))
3. Tra cứu hai chiều (dòng và cột)
Bảng doanh số: cột A là tên nhân viên (A2:A30), dòng 1 là các tháng “T1” đến “T12” (B1:M1). Ô P2 chứa tên, Q2 chứa tháng cần xem:
=INDEX($B$2:$M$30,MATCH(P2,$A$2:$A$30,0),MATCH(Q2,$B$1:$M$1,0))
MATCH thứ nhất tìm dòng, MATCH thứ hai tìm cột, INDEX lấy giao điểm. Rất hợp với bảng giá cước theo vùng – khối lượng, bảng phụ cấp theo chức vụ – thâm niên. Kết hợp danh sách thả xuống ở P2, Q2 là có ngay một “bảng tra” gọn gàng.
4. Tra cứu nhiều điều kiện
Bảng giá có cùng mã hàng nhưng khác kích cỡ: A = Mã hàng, B = Size, C = Đơn giá. Tìm giá của mã ở G2 với size ở H2:
=INDEX($C$2:$C$500,MATCH(1,($A$2:$A$500=G2)*($B$2:$B$500=H2),0))
Mỗi phép so sánh cho ra mảng TRUE/FALSE, nhân với nhau thành 1 khi cả hai điều kiện đúng; MATCH tìm số 1 đầu tiên.
- Excel 365 / 2021: nhấn Enter bình thường.
- Excel 2019 trở về trước: nhấn Ctrl + Shift + Enter (công thức hiện trong dấu ngoặc nhọn).
- Google Sheets: bọc trong
ARRAYFORMULA(...)hoặc nhấn Ctrl + Shift + Enter để Sheets tự thêm.
5. Lỗi hay gặp
- #N/A: không tìm thấy. Thường do khoảng trắng thừa, mã dạng số lẫn dạng chữ (“001” và 1), hoặc quên số
0ở cuối MATCH. Xem làm sạch dữ liệu và bọcIFERROR(...,"Không có"). - Kết quả lệch dòng: vùng INDEX và vùng MATCH bắt đầu ở hai dòng khác nhau.
- #REF!: số cột MATCH trả về lớn hơn số cột của vùng INDEX.
6. INDEX MATCH hay XLOOKUP?
Trên Excel 365/2021 và Google Sheets, XLOOKUP làm được hầu hết việc trên với cú pháp ngắn hơn — so sánh chi tiết trong bài VLOOKUP và XLOOKUP. INDEX MATCH vẫn đáng dùng khi file phải mở trên Excel 2016/2019, hoặc khi cần tra cứu hai chiều rõ ràng. Excel mới còn có XMATCH — phiên bản MATCH mặc định khớp chính xác và tìm được từ dưới lên.