Hàm VLOOKUP trong Excel dùng để tìm kiếm giá trị trong cột đầu tiên của bảng dữ liệu theo chiều dọc, sau đó trả về giá trị tương ứng ở cột khác cùng hàng. Cú pháp: =VLOOKUP(lookupvalue, tablearray, colindexnum, [range_lookup]) với 4 tham số chính: giá trị cần tìm, phạm vi bảng dữ liệu, số thứ tự cột kết quả, và kiểu tìm kiếm (TRUE cho tương đối, FALSE cho chính xác). Ví dụ: =VLOOKUP("SP002", A2:C4, 3, FALSE) để tìm đơn giá sản phẩm có mã SP002 trong bảng 3 cột.
Hàm VLOOKUP có 4 tham số theo thứ tự cố định: giá trị tìm, bảng dữ liệu, số cột, và kiểu tìm kiếm. Tôi đã dùng 5 năm rồi mà vẫn phải Google lại cú pháp mỗi khi viết công thức phức tạp.
Thật ra, không phải chỉ tôi gặp vấn đề này. VLOOKUP là một trong những hàm được dùng nhiều nhất trong Excel, nhưng cũng là hàm khiến người dùng nhầm lẫn nhất về thứ tự tham số. Đặc biệt là tham số thứ 4 – TRUE/FALSE – luôn làm tôi phân vân nên chọn gì.
Sau 5 năm vật lộn với những lỗi #N/A và kết quả sai, tôi đã tìm ra cách nhớ cú pháp một cách tự nhiên và tránh được những sai lầm phổ biến nhất.
Cách Nhớ 4 Tham số VLOOKUP Theo Thứ Tự Logic
Thay vì học thuộc lòng =VLOOKUP(lookupvalue, tablearray, colindexnum, range_lookup), tôi nhớ theo câu hỏi tự nhiên:
“Tìm CÁI GÌ trong BẢNG NÀO lấy cột THỨ MẤY theo kiểu GÌ?”
- CÁI GÌ =
lookup_value(giá trị cần tìm) - BẢNG NÀO =
table_array(vùng dữ liệu) - THỨ MẤY =
colindexnum(số thứ tự cột) - KIỂU GÌ =
range_lookup(TRUE/FALSE)
Ví dụ: “Tìm SP002 trong bảng A2:C10 lấy cột thứ 3 theo kiểu chính xác”
→ =VLOOKUP("SP002", A2:C10, 3, FALSE)
Cách nhớ này giúp tôi không bao giờ nhầm thứ tự tham số nữa. Mỗi khi viết VLOOKUP, tôi tự hỏi 4 câu hỏi này theo đúng thứ tự.
Tham Số Thứ 4: FALSE Luôn An Toàn Hơn TRUE
Đây là phần khiến tôi nhầm lẫn nhiều nhất. Excel mặc định range_lookup = TRUE nếu bạn bỏ trống, nhưng 90% trường hợp tôi cần FALSE.
TRUE (tìm kiếm tương đối):
- Trả về kết quả gần nhất nếu không tìm thấy chính xác
- Yêu cầu dữ liệu được sắp xếp tăng dần
- Dùng cho tra cứu khoảng (như bảng lương theo thu nhập)
FALSE (tìm kiếm tuyệt đối):
- Chỉ trả về kết quả khớp chính xác 100%
- Không cần sắp xếp dữ liệu
- Báo lỗi #N/A nếu không tìm thấy
Tôi luôn dùng FALSE trừ khi chắc chắn cần tìm kiếm tương đối. Lý do? Một lần tôi dùng TRUE để tìm mã nhân viên, kết quả trả về sai hoàn toàn vì dữ liệu không được sắp xếp.
Lỗi #N/A: Khi VLOOKUP Không Tìm Thấy Gì
Lỗi #N/A xuất hiện khi VLOOKUP không tìm thấy giá trị cần tìm. Thay vì bực mình, tôi check 3 nguyên nhân phổ biến:
Kiểm Tra Khoảng Trắng Thừa
Nhiều khi dữ liệu có khoảng trắng ở đầu hoặc cuối mà mắt thường không thấy. “SP001″ khác với ” SP001″ đối với Excel.
Tôi dùng hàm TRIM để loại bỏ: =VLOOKUP(TRIM(A2), B:D, 2, FALSE)
Định Dạng Dữ Liệu Không Khớp
Số được format thành text sẽ không khớp với số thật. Ví dụ: “123” (text) khác với 123 (number).
Cách fix nhanh: Chọn cột → Data → Text to Columns → Finish. Excel sẽ tự động convert text thành số.
Giá Trị Tìm Kiếm Không Tồn Tại
Đơn giản nhất: giá trị thực sự không có trong cột đầu tiên của bảng dữ liệu. Tôi thường copy giá trị cần tìm và Ctrl+F trong cột đầu tiên để kiểm tra.
Lỗi #REF: Khi Số Cột Vượt Quá Phạm Vi
Lỗi #REF xảy ra khi colindexnum lớn hơn số cột trong tablearray. Ví dụ: bảng có 3 cột nhưng tôi ghi colindex_num = 4.
Trick tôi dùng: Luôn đếm số cột trong bảng trước khi viết công thức. Bảng A2:C10 có 3 cột (A, B, C), nên colindexnum tối đa là 3.
Sử Dụng Tham Chiếu Tuyệt Đối Cho Table_Array
Một lỗi tôi mắc phải hàng trăm lần: khi copy công thức VLOOKUP xuống dưới, table_array bị dịch chuyển.
Sai: =VLOOKUP(A2, B2:D10, 2, FALSE)
Copy xuống A3 thành: =VLOOKUP(A3, B3:D11, 2, FALSE) ← Bảng bị dịch chuyển!
Đúng: =VLOOKUP(A2, $B$2:$D$10, 2, FALSE)
Copy xuống A3 thành: =VLOOKUP(A3, $B$2:$D$10, 2, FALSE) ← Bảng cố định!
Tôi luôn thêm dấu $ cho table_array ngay từ đầu. Bấm F4 sau khi chọn vùng dữ liệu là cách nhanh nhất.
Thay Thế VLOOKUP Bằng INDEX + MATCH Cho Linh Hoạt Hơn
Sau 5 năm dùng VLOOKUP, tôi phát hiện ra INDEX + MATCH mạnh hơn nhiều:
VLOOKUP chỉ tìm từ trái sang phải:
=VLOOKUP("SP001", A:C, 2, FALSE) ← Chỉ lấy được cột B hoặc C
INDEX + MATCH tìm theo mọi hướng:
=INDEX(A:A, MATCH("iPhone", B:B, 0)) ← Có thể lấy cột A dù tìm trong cột B
Cú pháp: =INDEX(cộtlấykếtquả, MATCH(giátrịtìm, cộttìm_kiếm, 0))
Tôi vẫn dùng VLOOKUP cho các trường hợp đơn giản, nhưng chuyển sang INDEX + MATCH khi cần linh hoạt hơn.
Wrap-Up: 5 Năm VLOOKUP Rút Ra Được Gì
Sau 5 năm vật lộn với VLOOKUP, tôi nhận ra rằng nhớ cú pháp chỉ là bước đầu. Quan trọng hơn là hiểu được những lỗi phổ biến và cách xử lý.
Giờ mỗi khi viết VLOOKUP, tôi check list này:
- Tham số thứ 4 để FALSE (trừ khi chắc chắn cần TRUE)
- Thêm dấu $ cho table_array
- Đếm số cột trước khi ghi colindexnum
- Kiểm tra format dữ liệu nếu gặp #N/A
VLOOKUP vẫn là công cụ mạnh mẽ, nhưng biết khi nào nên chuyển sang INDEX + MATCH sẽ giúp bạn xử lý được nhiều tình huống phức tạp hơn.







