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.

Dấu phân cáchVí dụ dùng dấu phẩy. Máy đặt vùng Việt Nam có thể cần dấu chấm phẩy: =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ìmMã nhân viên, mã hàng… cần tìm
vùng_tìmMột cột (hoặc một dòng) chứa giá trị đó
kiểu_khớp0 = 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))
MẹoLuôn cố định vùng bằng F4 (dấu $) trước khi kéo công thức xuống, và để hai vùng cùng số dòng (cùng bắt đầu từ dòng 2, kết thúc dòng 100).

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ọc IFERROR(...,"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.

Zalo