- Cú pháp VLOOKUP từng đối số
- Bốn bước viết công thức VLOOKUP đầu tiên
- Quy tắc cột đầu tiên: điều quyết định mọi thứ
- Khớp chính xác hay gần đúng: cái bẫy nhiều người bỏ qua
- Các lỗi VLOOKUP thường gặp và cách sửa
- Thói quen tốt khi dùng VLOOKUP
- Tìm gần đúng bằng ký tự đại diện
- VLOOKUP hay XLOOKUP
- Lời khuyên của mình
- Câu hỏi thường gặp
Hàm VLOOKUP tìm một giá trị trong cột đầu tiên của một bảng rồi trả về giá trị ở cùng hàng, trong cột bạn chỉ định. Cú pháp là =VLOOKUP(giá trị tra cứu, dải ô, số cột trả về, FALSE), trong đó FALSE (hoặc 0) cho kết quả khớp chính xác. Giá trị tra cứu luôn phải nằm ở cột ngoài cùng bên trái của dải ô.
VLOOKUP là một trong những hàm Excel được tìm nhiều nhất, và cũng là hàm hay cho ra kết quả sai mà không báo lỗi. Microsoft mô tả nó đơn giản: dùng VLOOKUP khi bạn cần tìm thông tin trong một bảng theo hàng, ví dụ tra giá của một linh kiện theo số linh kiện, hoặc tìm tên nhân viên theo ID nhân viên. Bài này đi theo trang trợ giúp tiếng Việt của Microsoft mà mình đọc vào tháng 10 năm 2026, kèm những chỗ dễ vướng nhất.
Cú pháp VLOOKUP từng đối số
Cú pháp đầy đủ: VLOOKUP(lookup_value, table_array, col_index_num, range_lookup). Ba đối số đầu là bắt buộc, đối số cuối là tùy chọn.
| Đối số | Bắt buộc? | Ý nghĩa |
|---|---|---|
| lookup_value | Bắt buộc | Giá trị bạn muốn tra cứu. Có thể là một giá trị hoặc tham chiếu đến một ô. Phải nằm trong cột đầu tiên của table_array |
| table_array | Bắt buộc | Dải ô VLOOKUP tìm kiếm, phải chứa cả lookup_value lẫn giá trị trả về. Có thể dùng phạm vi hoặc bảng đã đặt tên |
| col_index_num | Bắt buộc | Số thứ tự của cột chứa giá trị trả về, bắt đầu bằng 1 cho cột ngoài cùng bên trái của table_array |
| range_lookup | Tùy chọn | TRUE hoặc 1 cho kết quả khớp gần đúng; FALSE hoặc 0 cho kết quả khớp chính xác. Bỏ trống thì mặc định là TRUE |
Microsoft tóm lại bằng một câu rất dễ nhớ: =VLOOKUP(những gì bạn muốn tra cứu, nơi bạn muốn tìm, số cột trong dải ô chứa giá trị cần trả về, khớp tương đối hay chính xác).
Bốn bước viết công thức VLOOKUP đầu tiên
- Xác định giá trị bạn muốn tra cứu, ví dụ mã nhân viên trong ô A2.
- Chọn dải ô bắt đầu từ chính cột chứa giá trị tra cứu. Nếu giá trị tra cứu nằm ở cột C, dải ô phải bắt đầu ở C.
- Đếm số cột chứa giá trị trả về, tính từ cột đầu tiên của dải ô. Với dải B2:D11, B là cột thứ nhất, C là cột thứ hai, D là cột thứ ba.
- Nhập FALSE nếu bạn cần kết quả khớp chính xác, hoặc TRUE nếu bạn muốn kết quả khớp gần đúng.
Ghép lại, bạn có công thức kiểu =VLOOKUP(A2,B2:D11,3,FALSE). Công thức này tìm giá trị trong ô A2 ở cột B, rồi trả về giá trị cùng hàng ở cột D.
Quy tắc cột đầu tiên: điều quyết định mọi thứ
Bí quyết để dùng VLOOKUP, theo đúng lời Microsoft, là sắp xếp dữ liệu sao cho giá trị bạn muốn tra cứu nằm bên trái giá trị trả về. VLOOKUP chỉ tìm trong cột đầu tiên của table_array và chỉ nhìn sang phải. Nếu mảng bảng trải dài B2:D7, lookup_value của bạn phải nằm ở cột B.
Hệ quả thực tế: nếu bảng của bạn có cột Tên ở bên phải cột Mã, bạn tra từ Mã ra Tên được, nhưng không tra ngược từ Tên ra Mã bằng VLOOKUP được. Bạn sẽ phải di chuyển cột, hoặc dùng hàm khác. Đây chính là chỗ XLOOKUP được tạo ra để giải quyết.
Khớp chính xác hay gần đúng: cái bẫy nhiều người bỏ qua
| Đối số cuối | Cách hoạt động | Ví dụ của Microsoft |
|---|---|---|
| FALSE hoặc 0 | Tìm giá trị chính xác trong cột đầu tiên | =VLOOKUP("Smith",A1:B100,2,FALSE) |
| TRUE hoặc 1 | Giả định cột đầu tiên đã sắp xếp theo bảng chữ cái hoặc số, rồi tìm giá trị gần nhất | =VLOOKUP(90,A1:B100,2,TRUE) |
| Bỏ trống | Excel hiểu là TRUE, tức khớp gần đúng | Giống dòng trên |
Đây là điều mình muốn bạn nhớ nhất trong cả bài: nếu bạn quên đối số cuối, Excel mặc định dùng khớp gần đúng. Khi cột đầu tiên chưa được sắp xếp, VLOOKUP có thể trả về một giá trị bạn không mong đợi, và nó không báo lỗi gì cả. Bảng trông vẫn đầy đủ số liệu, chỉ là số sai. Microsoft đưa ra hai cách: sắp xếp cột đầu tiên, hoặc dùng FALSE để khớp chính xác.
Khi nào khớp gần đúng có ích? Khi bạn tra theo khoảng, ví dụ bảng mức điểm hay bậc thuế đã sắp xếp tăng dần. Còn với mã sản phẩm, mã nhân viên, tên khách hàng, hãy luôn ghi rõ FALSE.
Các lỗi VLOOKUP thường gặp và cách sửa
| Lỗi | Nguyên nhân | Cách xử lý |
|---|---|---|
| Giá trị sai, không báo lỗi | range_lookup là TRUE hoặc bỏ trống trong khi cột đầu tiên chưa sắp xếp | Sắp xếp cột đầu tiên hoặc dùng FALSE |
| #N/A | Với FALSE: không tìm thấy giá trị chính xác. Với TRUE: lookup_value nhỏ hơn giá trị nhỏ nhất trong cột đầu tiên | Kiểm tra giá trị tra cứu và dữ liệu cột đầu tiên |
| #REF! | col_index_num lớn hơn số cột trong table_array | Đếm lại số cột trong dải ô |
| #VALUE! | table_array nhỏ hơn 1 | Kiểm tra lại đối số trong công thức |
| #NAME? | Thường do thiếu dấu ngoặc kép quanh văn bản | Viết =VLOOKUP("Fontana",B2:E7,2,FALSE) thay vì gõ tên không có ngoặc kép |
| #SPILL! | Công thức dùng cả cột làm giá trị tra cứu, ví dụ =VLOOKUP(A:A,A:C,2,FALSE) | Neo bằng toán tử @: =VLOOKUP(@A:A,A:C,2,FALSE), hoặc tham chiếu một ô: =VLOOKUP(A2,A:C,2,FALSE) |
Với lỗi #N/A khi dùng FALSE, nguyên nhân hay gặp nhất mà mình thấy nằm ở dữ liệu chứ không ở công thức. Microsoft liệt kê đúng những thủ phạm này: số hoặc ngày được lưu dưới dạng văn bản, khoảng trắng ở đầu hoặc cuối ô, dùng lẫn lộn dấu ngoặc thẳng và dấu ngoặc cong, hoặc ký tự không in ra. Mắt bạn nhìn hai ô giống hệt nhau, nhưng Excel thấy chúng khác nhau.
Thói quen tốt khi dùng VLOOKUP
- Dùng tham chiếu ô tuyệt đối cho dải ô tra cứu, để khi điền công thức từ trên xuống, công thức luôn xem đúng cùng một phạm vi tra cứu.
- Không lưu số hoặc ngày dưới dạng văn bản trong cột đầu tiên, vì VLOOKUP có thể trả về giá trị sai.
- Sắp xếp cột đầu tiên trước khi dùng VLOOKUP với range_lookup là TRUE.
- Dùng hàm CLEAN hoặc TRIM để loại bỏ khoảng trắng và ký tự lạ trong cột đầu tiên.
Tìm gần đúng bằng ký tự đại diện
Khi range_lookup là FALSE và lookup_value là văn bản, bạn có thể dùng ký tự đại diện. Dấu chấm hỏi (?) khớp với một ký tự bất kỳ, dấu sao (*) khớp với một chuỗi ký tự bất kỳ. Ví dụ =VLOOKUP("Fontan?",B2:E7,2,FALSE) tìm Fontana với chữ cái cuối có thể khác. Nếu bạn cần tìm đúng ký tự dấu hỏi hay dấu sao, đặt dấu sóng (~) trước ký tự đó.
Want AI doing the heavy lifting in your marketing?
I build the systems that handle the boring 80 percent, so you get your week back. Done properly, with the human kept in.
Bạn cũng có thể tra cứu sang một trang tính khác. Ví dụ của Microsoft: =VLOOKUP(A2,'Chi tiết Khách hàng'!A:F,3,FALSE) tìm giá trị ô A2 trong trang tính Chi tiết Khách hàng và trả về cột thứ ba.
VLOOKUP hay XLOOKUP
Ngay đầu trang trợ giúp VLOOKUP, Microsoft gợi ý thử XLOOKUP, phiên bản cải tiến hoạt động theo mọi hướng và trả về kết quả khớp chính xác theo mặc định. Hai điểm này giải quyết đúng hai cái bẫy lớn nhất của VLOOKUP: chỉ nhìn sang phải và mặc định khớp gần đúng. Nếu bạn dùng Excel cho Microsoft 365 hoặc bản mới, XLOOKUP thường dễ hơn. Nếu bạn gửi tệp cho người dùng Excel đời cũ, VLOOKUP vẫn là lựa chọn an toàn.
Lời khuyên của mình
Mỗi lần viết VLOOKUP, hãy ghi rõ FALSE ở cuối trừ khi bạn chủ động tra theo khoảng. Đặt cột tra cứu ở ngoài cùng bên trái, dùng tham chiếu tuyệt đối cho dải ô, và khi gặp #N/A, kiểm tra khoảng trắng và kiểu dữ liệu trước khi nghi ngờ công thức. Nếu bạn đang dùng Excel để theo dõi số liệu kênh, ví dụ ghép tên video với lượt xem, đọc thêm 1000 view YouTube được bao nhiêu tiền và cách bật kiếm tiền YouTube.
Câu hỏi thường gặp
Hàm VLOOKUP dùng để làm gì?
VLOOKUP tìm thông tin trong một bảng theo hàng, ví dụ tra giá linh kiện theo số linh kiện hoặc tìm tên nhân viên theo ID nhân viên.
Vì sao VLOOKUP trả về giá trị sai mà không báo lỗi?
Thường do range_lookup là TRUE hoặc bỏ trống trong khi cột đầu tiên chưa được sắp xếp. Hãy sắp xếp cột đầu tiên hoặc dùng FALSE.
VLOOKUP có tra cứu sang bên trái được không?
Không. Giá trị tra cứu phải nằm ở cột đầu tiên của dải ô, và giá trị trả về nằm ở bên phải nó.
Lỗi #N/A trong VLOOKUP nghĩa là gì?
Với FALSE, #N/A nghĩa là không tìm thấy giá trị chính xác. Với TRUE, giá trị tra cứu nhỏ hơn giá trị nhỏ nhất trong cột đầu tiên.
Lỗi #REF! trong VLOOKUP do đâu?
Do col_index_num lớn hơn số cột trong table_array.
Đối số cuối của VLOOKUP bỏ trống thì sao?
Excel mặc định dùng TRUE, tức kết quả khớp gần đúng.


