Hàm VLOOKUP trong Excel: cú pháp, ví dụ và cách sửa lỗi

Hàm VLOOKUP trong Excel dùng để dò tìm một giá trị ở cột đầu tiên của một bảng, rồi trả về dữ liệu nằm cùng hàng ở cột bạn chỉ định. Công thức chuẩn là =VLOOKUP(giá trị cần tìm, bảng dò, số thứ tự cột, kiểu dò), trong đó kiểu dò để FALSE (hoặc 0) khi cần tìm chính xác. Bài viết giải thích từng đối số, kèm ví dụ dò chính xác, dò gần đúng, dò sang sheet khác, dò nhiều điều kiện, kết hợp IF và cách sửa các lỗi #N/A, #REF!, #VALUE!.
Hàm VLOOKUP trong Excel là gì?
VLOOKUP là viết tắt của Vertical Lookup, nghĩa là dò tìm theo chiều dọc. Hàm tìm giá trị theo từng hàng trong cột đầu tiên của vùng dữ liệu, thấy rồi thì "nhìn sang phải" để lấy giá trị ở cột cần lấy.
Các tình huống hay dùng:
- Tra tên sản phẩm, đơn giá theo mã hàng.
- Lấy họ tên, phòng ban của nhân viên theo mã nhân viên.
- Xếp loại học lực theo điểm số, tính hoa hồng theo doanh số.
- Ghép dữ liệu từ hai bảng, hai sheet khác nhau về một chỗ.
Theo trang hỗ trợ của Microsoft, hàm VLOOKUP dùng được trong Excel cho Microsoft 365, Excel 2024, Excel 2021 (cả Windows và Mac), Excel 2019 và Excel 2016.
Cú pháp hàm VLOOKUP và 4 đối số
Cú pháp:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
Ý nghĩa từng đối số:
- lookup_value (giá trị cần tìm, bắt buộc): giá trị bạn muốn dò, có thể là một ô như
A2hoặc giá trị cụ thể như"SP02". Giá trị này phải nằm ở cột đầu tiên của vùng dò. - table_array (bảng dò, bắt buộc): vùng dữ liệu chứa cả cột dò và cột kết quả, ví dụ
$A$2:$D$50. - col_index_num (số thứ tự cột, bắt buộc): cột chứa kết quả, đếm từ cột đầu tiên của bảng dò là 1. Lấy cột thứ ba trong bảng dò thì ghi 3.
- range_lookup (kiểu dò, tùy chọn):
FALSEhoặc0là dò chính xác;TRUEhoặc1là dò gần đúng. Bỏ trống thì Excel hiểu làTRUE.
Lưu ý quan trọng: Vì bỏ trống đối số cuối sẽ thành dò gần đúng, người mới hay nhận kết quả sai mà không biết. Khi tra mã, tên, số điện thoại... hãy luôn ghiFALSEhoặc0.
Dấu phẩy hay dấu chấm phẩy?
Bài này viết công thức với dấu phẩy ,. Nếu máy bạn báo lỗi công thức, hãy thay bằng dấu chấm phẩy ;, ví dụ =VLOOKUP(A2;$F$2:$H$10;2;0). Excel dùng dấu phân cách theo cài đặt vùng (Region) của Windows. Máy đặt định dạng kiểu Việt Nam, dùng dấu phẩy làm dấu thập phân, thường phải dùng ; để ngăn các đối số.
Cách dùng hàm VLOOKUP dò tìm chính xác
Giả sử bạn có bảng giá ở vùng F1:H5 như sau:
- Cột F (Mã hàng): SP01, SP02, SP03, SP04
- Cột G (Tên hàng): Bút bi, Vở 200 trang, Thước kẻ, Bìa hồ sơ
- Cột H (Đơn giá): 5.000, 18.000, 7.000, 12.000
Ở bảng bán hàng, cột A chứa mã hàng khách mua. Bạn cần lấy tên hàng vào cột B và đơn giá vào cột C.
- Bấm vào ô
B2, nhập:=VLOOKUP(A2, $F$2:$H$5, 2, FALSE) - Nhấn
Enter. NếuA2là SP02, kết quả là "Vở 200 trang". - Bấm vào ô
C2, nhập:=VLOOKUP(A2, $F$2:$H$5, 3, FALSE)để lấy đơn giá 18.000. - Chọn
B2:C2, kéo nút điền (ô vuông nhỏ ở góc dưới phải) xuống các dòng còn lại.
Khóa vùng dò bằng dấu $ (phím F4)
Dấu $ trong $F$2:$H$5 giúp vùng dò đứng yên khi kéo công thức. Nếu chỉ ghi F2:H5, kéo xuống dòng dưới vùng sẽ trượt thành F3:H6, F4:H7... và bắt đầu trả lỗi #N/A.
Cách thêm nhanh: trong thanh công thức, bôi đen phần F2:H5 rồi nhấn F4 (Windows). Mỗi lần nhấn, Excel chuyển lần lượt giữa các kiểu tham chiếu tuyệt đối, hỗn hợp và tương đối.
Dò tìm gần đúng: ví dụ bảng xếp loại
Dò gần đúng (TRUE) hữu ích khi cần xếp loại theo khoảng điểm. Tạo bảng xếp loại ở vùng K2:L5, sắp xếp tăng dần theo cột đầu:
- 0 → Yếu
- 5 → Trung bình
- 6,5 → Khá
- 8 → Giỏi
Với điểm ở ô B2, công thức xếp loại là:
=VLOOKUP(B2, $K$2:$L$5, 2, TRUE)
Nếu điểm là 7,2, Excel không thấy số 7,2 trong cột K nên lấy giá trị lớn nhất mà nhỏ hơn 7,2, tức 6,5, và trả về "Khá". Điểm 9 cho "Giỏi", điểm 4 cho "Yếu".
Hai điều cần nhớ, theo Microsoft:
- Cột đầu tiên của bảng dò phải được sắp xếp tăng dần, nếu không kết quả có thể sai.
- Nếu giá trị cần tìm nhỏ hơn số nhỏ nhất trong cột đầu (ví dụ điểm âm), hàm trả về #N/A.
Hàm VLOOKUP 2 sheet, kết hợp IF và nhiều điều kiện
Dò sang sheet khác
Khi bảng giá nằm ở sheet tên BangGia, công thức ghi thêm tên sheet và dấu ! trước vùng dò:
=VLOOKUP(A2, BangGia!$A$2:$C$100, 2, FALSE)
Nếu tên sheet có dấu cách hoặc có dấu tiếng Việt, đặt tên sheet trong cặp nháy đơn: 'Bảng giá'!$A$2:$C$100. Cách nhanh nhất là gõ =VLOOKUP(A2, rồi bấm sang sheet kia và kéo chọn vùng, Excel tự điền đúng cú pháp. Sau đó nhấn F4 để khóa vùng.
Hàm VLOOKUP nhiều điều kiện bằng cột phụ
VLOOKUP chỉ dò theo một giá trị. Muốn dò theo hai điều kiện, ví dụ vừa đúng mã hàng vừa đúng kích cỡ, bạn tạo cột phụ ghép hai điều kiện lại.
Ví dụ bảng dữ liệu:
- Cột B (Mã hàng): AO01, AO01, AO02
- Cột C (Size): M, L, M
- Cột D (Giá): 150.000, 160.000, 170.000
Các bước:
- Chèn một cột trống bên trái cột B, gọi là cột A (cột phụ).
- Tại
A2nhập=B2&"-"&C2, kéo xuống. Kết quả: AO01-M, AO01-L, AO02-M. - Ở bảng cần tra, mã hàng ở
G2, size ởH2. Công thức lấy giá:=VLOOKUP(G2&"-"&H2, $A$2:$D$100, 4, FALSE) - Với AO01 và size L, kết quả là 160.000.
Dấu gạch nối giúp tránh nhầm lẫn khi hai giá trị ghép lại vô tình trùng nhau. Bạn có thể ẩn cột phụ cho bảng gọn.
VLOOKUP kết hợp IF và IFERROR
VLOOKUP kết hợp IF dùng khi cần ra quyết định dựa trên kết quả dò. Ví dụ, đơn giá từ 10.000 trở lên thì ghi "Hàng cao cấp", còn lại ghi "Hàng phổ thông":
=IF(VLOOKUP(A2, $F$2:$H$5, 3, FALSE)>=10000, "Hàng cao cấp", "Hàng phổ thông")
IF cũng dùng để chặn ô trống: =IF(A2="", "", VLOOKUP(A2, $F$2:$H$5, 2, FALSE)). Khi cột A chưa nhập mã, ô kết quả để trống thay vì hiện #N/A.
IFERROR thay mọi lỗi bằng thông báo dễ hiểu:
=IFERROR(VLOOKUP(A2, $F$2:$H$5, 2, FALSE), "Không tìm thấy")
Lưu ý: IFERROR che cả lỗi do gõ sai công thức. Hãy kiểm tra công thức chạy đúng rồi mới bọc IFERROR.
VLOOKUP bị lỗi #N/A, #REF!, #VALUE! và cách sửa
Lỗi #N/A
VLOOKUP bị lỗi #N/A nghĩa là Excel không tìm thấy giá trị. Các nguyên nhân thường gặp:
- Giá trị thật sự không có trong cột đầu của bảng dò. Kiểm tra lại mã, hoặc dùng IFERROR.
- Giá trị cần tìm không nằm ở cột đầu tiên của vùng dò. VLOOKUP chỉ dò ở cột trái nhất, nên hãy chọn lại vùng bắt đầu từ cột chứa mã.
- Dư dấu cách ở đầu hoặc cuối, ví dụ "SP01 " khác "SP01". Dùng hàm
TRIMđể làm sạch dữ liệu. - Lệch kiểu dữ liệu: một bên là số, bên kia là số lưu dạng văn bản (thường có tam giác xanh ở góc ô). Đưa hai bên về cùng một kiểu, ví dụ chọn cột rồi dùng Data > Text to Columns > Finish.
- Quên khóa vùng dò bằng
$, kéo công thức xuống thì vùng bị trượt. - Dò gần đúng trên bảng chưa sắp xếp. Đổi đối số cuối thành
FALSE.
Lỗi #REF!
Lỗi này xuất hiện khi số thứ tự cột lớn hơn số cột của bảng dò. Ví dụ vùng $F$2:$H$5 chỉ có 3 cột mà bạn ghi 4. Sửa lại col_index_num cho đúng, hoặc mở rộng vùng dò.
Lỗi #VALUE!
Thường do số thứ tự cột nhỏ hơn 1, ví dụ ghi 0, hoặc đối số này không phải là số. Hãy nhớ cột đầu tiên của bảng dò luôn là 1.
Lỗi #NAME?
Thường do gõ sai tên hàm, hoặc viết giá trị chữ mà quên dấu nháy kép. Đúng phải là =VLOOKUP("SP02", ...), không phải =VLOOKUP(SP02, ...).
Hàm VLOOKUP và HLOOKUP, XLOOKUP khác nhau thế nào?
HLOOKUP (Horizontal Lookup) là "anh em" của VLOOKUP nhưng dò theo chiều ngang. Hàm tìm giá trị ở hàng đầu tiên của bảng rồi lấy kết quả ở hàng phía dưới:
=HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])
Microsoft gợi ý: dữ liệu so sánh nằm ở một cột bên trái thì dùng VLOOKUP, nằm ở hàng trên cùng thì dùng HLOOKUP.
XLOOKUP là hàm mới mà Microsoft giới thiệu như bản cải tiến của VLOOKUP, dò được theo mọi hướng:
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
Ví dụ lấy tên hàng: =XLOOKUP(A2, $F$2:$F$5, $G$2:$G$5, "Không tìm thấy")
So với VLOOKUP, XLOOKUP có các ưu điểm:
- Mặc định dò chính xác, không cần nhớ ghi FALSE.
- Lấy được dữ liệu ở cột bên trái cột dò.
- Chèn hay xóa cột không làm sai kết quả, vì không phụ thuộc số thứ tự cột.
- Có sẵn đối số
if_not_found, không cần bọc IFERROR.
Về phiên bản: theo trang hỗ trợ của Microsoft, XLOOKUP có trong Excel cho Microsoft 365, Excel 2021 và Excel 2024 (Windows và Mac), cùng ứng dụng Excel trên iPad, iPhone, Android. Excel 2016 và Excel 2019 không có XLOOKUP. Nếu file sẽ gửi cho người dùng bản cũ, VLOOKUP vẫn là lựa chọn an toàn.
Câu hỏi thường gặp
Hàm VLOOKUP có dò được từ phải sang trái không?
Không. VLOOKUP chỉ dò ở cột đầu tiên và lấy kết quả ở các cột bên phải. Muốn lấy cột bên trái, bạn dùng XLOOKUP hoặc kết hợp INDEX với MATCH.
Vì sao kéo công thức VLOOKUP xuống thì các dòng dưới bị #N/A?
Thường do chưa khóa vùng dò. Hãy bôi đen vùng trong công thức, nhấn F4 để thêm dấu $, rồi kéo lại.
Hàm VLOOKUP có phân biệt chữ hoa, chữ thường không?
Không. VLOOKUP coi "sp01" và "SP01" là như nhau, nên đừng dùng chữ hoa, chữ thường để phân biệt mã.
Dùng hàm VLOOKUP 2 file Excel khác nhau được không?
Được. Mở cả hai file, khi gõ công thức thì chuyển sang file kia và chọn vùng dò, Excel sẽ tự ghi kèm tên file trong ngoặc vuông. Nên để hai file cùng thư mục và không đổi tên file sau đó để liên kết không bị hỏng.
Khi có nhiều dòng trùng mã, VLOOKUP trả về dòng nào?
VLOOKUP dò chính xác sẽ trả về kết quả của dòng đầu tiên khớp từ trên xuống. Nếu cần lấy tất cả các dòng trùng, hãy dùng tính năng lọc dữ liệu (Data > Filter) để xem hết các dòng có cùng mã.