Hàm VLOOKUP trong Excel dò tìm một giá trị ở cột đầu tiên của bảng rồi trả về giá trị cùng hàng ở cột bạn chỉ định; hàm HLOOKUP làm điều tương tự theo hàng ngang. Đây là hai hàm dò tìm dùng nhiều nhất để lấy tên hàng, đơn giá hay xếp loại theo mã.
Ví dụ nhanh: =VLOOKUP("SP03";A2:C6;3;FALSE) → 7.000 (đơn giá của mã SP03 trong bảng ví dụ 1)
Nguồn: tài liệu hàm VLOOKUP và hàm HLOOKUP của Microsoft, đối chiếu ngày 07/10/2026. Áp dụng cho Excel cho Microsoft 365, Excel 2021, 2019, 2016 và các bản cũ hơn.

Cú pháp hàm VLOOKUP và HLOOKUP
VLOOKUP dò theo cột dọc (Vertical), HLOOKUP dò theo hàng ngang (Horizontal). Hai hàm có cùng bốn đối số; máy cài tiếng Việt thường dùng dấu chấm phẩy (;) ngăn cách đối số, máy cài tiếng Anh dùng dấu phẩy (,).
=VLOOKUP(lookup_value; table_array; col_index_num; [range_lookup]) =HLOOKUP(lookup_value; table_array; row_index_num; [range_lookup])
| Đối số | Bắt buộc? | Ý nghĩa |
|---|---|---|
lookup_value |
Có | Giá trị cần tìm, phải nằm ở cột đầu (VLOOKUP) hoặc hàng đầu (HLOOKUP) của bảng. |
table_array |
Có | Vùng bảng dò tìm, nên khoá bằng dấu $ (ví dụ $A$2:$C$6) để copy công thức không bị lệch. |
col_index_num / row_index_num |
Có | Thứ tự cột (hoặc hàng) trong bảng chứa giá trị cần lấy; cột đầu tiên của bảng là 1. |
range_lookup |
Không | FALSE (hoặc 0) để tìm chính xác; TRUE (hoặc bỏ trống) để tìm gần đúng, khi đó cột đầu phải sắp xếp tăng dần. |
Ví dụ 1: Tra tên hàng và đơn giá theo mã
Bảng hàng hoá ở A1:C6; ô E2 chứa mã cần tìm. Công thức lấy tên hàng (cột 2) và đơn giá (cột 3) của mã đó.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Mã | Tên hàng | Đơn giá | Mã cần tìm | |
| 2 | SP01 | Bút bi | 5000 | SP03 | |
| 3 | SP02 | Vở 120 trang | 12000 | ||
| 4 | SP03 | Thước kẻ | 7000 | ||
| 5 | SP04 | Bút chì | 3000 | ||
| 6 | SP05 | Tẩy | 4000 |
| Ô | Công thức | Kết quả | Giải thích |
|---|---|---|---|
| F2 | =VLOOKUP(E2;$A$2:$C$6;2;FALSE) |
Thước kẻ | Cột 2 là Tên hàng |
| G2 | =VLOOKUP(E2;$A$2:$C$6;3;FALSE) |
7.000 | Cột 3 là Đơn giá |
Đổi E2 sang SP05, hai ô kết quả lần lượt thành «Tẩy» và 4.000.
Ví dụ 2: Xếp loại học lực bằng dò tìm gần đúng
Bảng mốc điểm ở A1:B6 sắp tăng dần. Với TRUE, VLOOKUP lấy mốc lớn nhất không vượt quá điểm của học sinh.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Điểm từ | Xếp loại | Học sinh | Điểm | |
| 2 | 0 | Yếu | An | 7.2 | |
| 3 | 5 | Trung bình | Bình | 9.1 | |
| 4 | 6.5 | Khá | Chi | 4.5 | |
| 5 | 8 | Giỏi | Dũng | 8 | |
| 6 | 9 | Xuất sắc |
| Ô | Công thức | Kết quả | Giải thích |
|---|---|---|---|
| F2 | =VLOOKUP(E2;$A$2:$B$6;2;TRUE) |
Khá | 7,2 nằm giữa mốc 6,5 và 8 |
| F3 | =VLOOKUP(E3;$A$2:$B$6;2;TRUE) |
Xuất sắc | 9,1 ≥ mốc 9 |
| F4 | =VLOOKUP(E4;$A$2:$B$6;2;TRUE) |
Yếu | 4,5 nằm giữa mốc 0 và 5 |
| F5 | =VLOOKUP(E5;$A$2:$B$6;2;TRUE) |
Giỏi | 8 trùng đúng mốc 8 |
Nếu bảng mốc không sắp tăng dần, dò tìm gần đúng có thể trả về kết quả sai mà không báo lỗi.

Ví dụ 3: HLOOKUP tra phí giao hàng theo vùng
Bảng phí xếp theo hàng ngang: hàng 1 là tên vùng, hàng 2 là phí, hàng 3 là số ngày giao.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Vùng | Miền Bắc | Miền Trung | Miền Nam |
| 2 | Phí (đồng) | 30000 | 25000 | 35000 |
| 3 | Ngày giao | 2 | 3 | 2 |
| Ô | Công thức | Kết quả | Giải thích |
|---|---|---|---|
| F2 | =HLOOKUP("Miền Trung";$B$1:$D$3;2;FALSE) |
25.000 | Hàng 2 của bảng là Phí |
| F3 | =HLOOKUP("Miền Nam";$B$1:$D$3;3;FALSE) |
2 | Hàng 3 là Ngày giao |
Ví dụ 4: Báo «Không có mã» thay cho lỗi #N/A
Dùng lại bảng của ví dụ 1. Khi mã không có trong bảng, VLOOKUP trả #N/A; bọc trong IFERROR để hiện thông báo dễ hiểu.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Mã | Tên hàng | Đơn giá | Mã cần tìm | |
| 2 | SP01 | Bút bi | 5000 | SP09 | |
| 3 | SP02 | Vở 120 trang | 12000 | ||
| 4 | SP03 | Thước kẻ | 7000 | ||
| 5 | SP04 | Bút chì | 3000 | ||
| 6 | SP05 | Tẩy | 4000 |
| Ô | Công thức | Kết quả | Giải thích |
|---|---|---|---|
| F2 | =IFERROR(VLOOKUP(E2;$A$2:$C$6;2;FALSE);"Không có mã") |
Không có mã | SP09 không có trong cột Mã |
Lỗi thường gặp với VLOOKUP, HLOOKUP và cách sửa
| Lỗi | Nguyên nhân | Cách sửa |
|---|---|---|
#N/A |
Không tìm thấy giá trị: gõ sai mã, thừa dấu cách, hoặc mã là số ở một bên và chữ ở bên kia. | Dùng TRIM để bỏ dấu cách; đưa cả hai về cùng kiểu (số hoặc văn bản); kiểm tra lại mã. |
#REF! |
col_index_num lớn hơn số cột của table_array. | Mở rộng vùng bảng hoặc giảm số thứ tự cột. |
#VALUE! |
col_index_num nhỏ hơn 1. | Số thứ tự cột phải từ 1 trở lên. |
Kết quả sai, không báo lỗi |
Dùng TRUE (hoặc bỏ trống) khi cột đầu chưa sắp xếp, hoặc khi cần tìm chính xác. | Ghi rõ FALSE khi tra mã; chỉ dùng TRUE cho bảng mốc đã sắp tăng dần. |
Copy công thức bị lệch bảng |
table_array không khoá $, kéo xuống làm vùng bảng trượt theo. | Khoá vùng bảng: $A$2:$C$6 (nhấn F4 khi chọn vùng). |
VLOOKUP khác INDEX + MATCH và XLOOKUP thế nào?
VLOOKUP chỉ dò được cột đầu tiên và trả về cột nằm bên phải. Khi cần tra ngược sang trái hoặc bảng hay chèn thêm cột, hãy kết hợp hàm INDEX và MATCH; Excel cho Microsoft 365 và Excel 2021 còn có hàm XLOOKUP, theo tài liệu Microsoft có thể dò theo cả hai chiều và mặc định tìm chính xác.
| Tiêu chí | VLOOKUP | INDEX + MATCH | XLOOKUP |
|---|---|---|---|
| Tra sang trái | Không | Có | Có |
| Mặc định | Gần đúng (nếu bỏ trống đối số 4) | Tuỳ đối số của MATCH | Chính xác |
| Phiên bản | Mọi bản | Mọi bản | Microsoft 365, Excel 2021 trở lên |
Xem thêm các hàm khác trong bài các hàm trong Excel.
Tải file Excel mẫu
File mẫu gồm 4 trang tính, mỗi trang là một ví dụ ở trên với công thức để sẵn; Excel tự tính lại khi mở. Tải file Excel mẫu (.xlsx).
Câu hỏi thường gặp
VLOOKUP có tìm được giá trị nằm bên trái cột dò không?
Không. VLOOKUP chỉ trả về cột nằm bên phải cột đầu tiên của vùng bảng. Dùng INDEX + MATCH hoặc XLOOKUP khi cần lấy dữ liệu bên trái.
VLOOKUP có phân biệt chữ hoa, chữ thường không?
Không. «sp03» và «SP03» được coi là giống nhau.
Nên dùng dấu phẩy hay dấu chấm phẩy trong công thức?
Tuỳ cài đặt vùng của Windows. Máy đặt định dạng Việt Nam thường dùng dấu chấm phẩy; nếu Excel báo lỗi công thức, hãy đổi sang dấu phẩy.
Xem thêm các thủ thuật Excel khác tại ITGO.



