Menu

Chia sẻ cách xử lý lỗi #N/A khi dùng VLOOKUP với điều kiện phức tạp

Ma Linh Quân 12/06/2026 03:35 599 lượt xem 2 trả lời

Chào các bạn, mình là thành viên mới của diễn đàn. Hôm nay mình muốn chia sẻ một kinh nghiệm nhỏ khi xử lý lỗi #N/A với hàm VLOOKUP mà mình vừa gặp phải.

Thông thường, lỗi #N/A khi dùng VLOOKUP là do giá trị tìm kiếm không có trong bảng dữ liệu. Tuy nhiên, trường hợp của mình phức tạp hơn một chút. Mình cần tìm kiếm một mã sản phẩm duy nhất, nhưng trong bảng dữ liệu lại có nhiều dòng cùng mã sản phẩm đó, và mình chỉ muốn lấy thông tin từ dòng đầu tiên xuất hiện.

Cách giải quyết thông thường là thêm một cột phụ để tạo mã duy nhất, nhưng mình muốn hạn chế thêm cột phụ để giữ cho bảng tính gọn gàng. Sau một hồi tìm tòi, mình đã tìm ra cách kết hợp VLOOKUP với MINIF để giải quyết vấn đề này.

Công thức có dạng như sau:

=VLOOKUP(A2, IF({1,0}, RangeMaSP, RangeDuLieuCanLay), 2, FALSE)

Trong đó:

  • A2 là ô chứa mã sản phẩm cần tìm.
  • RangeMaSP là cột chứa mã sản phẩm trong bảng dữ liệu.
  • RangeDuLieuCanLay là cột chứa dữ liệu bạn muốn lấy về.

Cách này sẽ tạo ra một mảng ảo, trong đó IF({1,0},...) sẽ ưu tiên lấy giá trị từ RangeDuLieuCanLay nếu mã sản phẩm trùng khớp. Tuy nhiên, cách này chưa thực sự xử lý được trường hợp có nhiều mã trùng.

Cách tốt hơn mà mình áp dụng là kết hợp INDEXAGGREGATE:

=INDEX(CộtDữLiệuCầnLấy, AGGREGATE(15, 6, (ROW(CộtMaSP)-ROW(INDEX(CộtMaSP,1,1))+1)/(CộtMaSP=ÔTìmKiếm), 1))

Giải thích công thức:

  • CộtDữLiệuCầnLấy: Vùng chứa kết quả bạn muốn trả về.
  • CộtMaSP: Vùng chứa mã sản phẩm để so sánh.
  • ÔTìmKiếm: Ô chứa mã sản phẩm bạn đang tìm.
  • AGGREGATE(15, 6, ..., 1): Hàm này tìm số thứ tự dòng nhỏ nhất (15 là Small, 6 là bỏ qua lỗi) của mã sản phẩm khớp với ÔTìmKiếm trong CộtMaSP.
  • ROW(CộtMaSP)-ROW(INDEX(CộtMaSP,1,1))+1: Tạo ra một dãy số thứ tự của các dòng trong CộtMaSP.

Hy vọng chia sẻ này hữu ích cho các bạn nào đang gặp tình huống tương tự. Nếu có cách nào hay hơn, mọi người cùng thảo luận nhé!

3

Hay quá bạn ơi! Mình cũng hay gặp tình huống tương tự với VLOOKUP, cứ nghĩ là phải dùng đến mảng phức tạp. Bạn có thể chia sẻ cụ thể hơn về cách xử lý mà bạn đã áp dụng không? Ví dụ, bạn dùng thêm hàm nào hoặc điều kiện phụ ra sao để chỉ lấy dòng đầu tiên khi mã sản phẩm bị trùng?

3

Đúng là trường hợp này khá "hóc búa" với VLOOKUP thông thường thật. Mình cũng từng loay hoay với mấy vụ mã sản phẩm bị trùng.

Chủ thớt có thể chia sẻ thêm về cách bạn xử lý không? Liệu có phải bạn đã dùng kết hợp thêm hàm IF hoặc một điều kiện nào đó để xác định dòng đầu tiên không? Nếu có thể, bạn cho mình xin một ví dụ cụ thể về công thức thì quá tuyệt vời ạ!

0

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký