Chào mọi người,
Dạo gần đây mình hay gặp một vấn đề khá khó chịu khi sử dụng hàm VLOOKUP và HLOOKUP, đó là lỗi #N/A. Sau khi debug một hồi thì mình phát hiện ra nguyên nhân không phải do sai vùng tìm kiếm hay sai cột trả về, mà là do dữ liệu trong cột đầu tiên của bảng tra cứu (hoặc hàng đầu tiên đối với HLOOKUP) có chứa các giá trị trùng lặp.
Khi có nhiều hơn một giá trị trùng khớp, Excel sẽ chỉ trả về kết quả của lần trùng khớp đầu tiên mà nó tìm thấy. Nếu giá trị bạn đang tìm kiếm không nằm trong các giá trị trùng khớp đầu tiên đó, thì bạn sẽ nhận được lỗi #N/A.
Ví dụ:
Giả sử bạn có bảng dữ liệu với cột Mã Sản Phẩm có các giá trị bị lặp:
Mã SP | Tên SP
-------|-------
A001 | Bàn
A002 | Ghế
A001 | Tủ
B003 | GiườngNếu bạn dùng VLOOKUP("A001", ... ), Excel sẽ chỉ trả về "Bàn" (của dòng đầu tiên có A001) chứ không phải "Tủ".
Cách khắc phục:
1. Kiểm tra và loại bỏ dữ liệu trùng lặp: Đây là cách tốt nhất nếu có thể. Bạn có thể dùng tính năng Remove Duplicates của Excel hoặc dùng các hàm như COUNTIF để xác định và xử lý các dòng trùng lặp.
2. Sử dụng kết hợp với hàm khác để tạo khóa duy nhất: Nếu không thể loại bỏ trùng lặp, bạn có thể tạo một cột phụ chứa giá trị duy nhất bằng cách ghép nối cột cần tra cứu với một số thứ tự hoặc một ký tự đặc biệt. Ví dụ, nếu cột A là Mã SP, bạn có thể tạo cột B với công thức =A2&COUNTIF($A$2:A2,A2) rồi kéo xuống. Sau đó, dùng VLOOKUP với cột này.
3. Sử dụng FILTER (Excel 365): Nếu bạn dùng phiên bản Excel mới, hàm FILTER sẽ giúp bạn lấy tất cả các kết quả phù hợp thay vì chỉ kết quả đầu tiên.
Hy vọng chia sẻ này giúp ích cho các bạn khi làm việc với Excel!