VLOOKUP, XLOOKUP hay INDEX/MATCH: dùng hàm nào?

So sánh ba cách tra cứu dữ liệu phổ biến nhất, giải thích lỗi #N/A và các mẹo tránh sai kết quả.

Giả sử bảng BangGia có cột A: Mã hàng, B: Tên hàng, C: Đơn giá. Ở bảng bán hàng, ô A2 chứa mã hàng cần tra đơn giá.

VLOOKUP

=VLOOKUP(A2;BangGia!$A$2:$C$500;3;FALSE)
  • Đối số thứ 3 (3) là số thứ tự cột kết quả trong vùng tra cứu.
  • Luôn dùng FALSE (hoặc 0) ở đối số cuối để tìm chính xác. Bỏ trống sẽ tìm gần đúng và cho kết quả sai rất khó phát hiện.
  • Hạn chế: chỉ tra được sang bên phải; chèn thêm cột vào bảng sẽ làm lệch số thứ tự cột.

XLOOKUP (khuyên dùng)

=XLOOKUP(A2;BangGia!A:A;BangGia!C:C;"Không tìm thấy")
  • Có trong Excel 365, Excel 2021 trở lên và Google Sheets.
  • Tra được cả sang trái, mặc định tìm chính xác, có sẵn giá trị khi không tìm thấy.
  • Trả về được nhiều cột cùng lúc: =XLOOKUP(A2;BangGia!A:A;BangGia!B:C).

INDEX + MATCH

=INDEX(BangGia!C:C;MATCH(A2;BangGia!A:A;0))

Hoạt động trên mọi phiên bản Excel, linh hoạt như XLOOKUP. Phù hợp khi phải gửi tệp cho người dùng Excel đời cũ.

Bảng so sánh

VLOOKUPXLOOKUPINDEX/MATCH
Dễ học★★★★★★★★
Tra sang tráiKhôngCóCó
Bền khi chèn cộtKhôngCóCó
Excel đời cũCóKhôngCó

Vì sao bị lỗi #N/A?

  • Khoảng trắng thừa: “SP01 ” khác “SP01”. Dùng TRIM để làm sạch.
  • Số lưu dạng chữ: mã 1001 ở bảng này là số, bảng kia là văn bản. Chuyển cùng một kiểu (Data → Text to Columns → Finish là cách nhanh).
  • Quên cố định vùng: kéo công thức xuống làm vùng tra cứu trượt theo. Dùng $A$2:$C$500 hoặc cả cột A:C.
=IFERROR(VLOOKUP(A2;BangGia!$A:$C;3;FALSE);"Chưa có giá")
Zalo