Bài viết dưới đây, Học Excel Online sẽ hướng dẫn các bạn xử lý sự cố hàm Vlookup không hoạt động trong Excel 2016, 2013, 2010, 2007 và 2003. Ngoài ra, Học Excel Online sẽ hướng dẫn cách khắc phục các lỗi thường gặp hàm Vlookup như #N/A, #NAME VÀ #VALUE và các hạn chếcủa Vlookup.
Trong các bài viết trước chúng ta đã tìm hiểu những khía cạnh khác nhau của hàm Vlookup trong Excel. Tuy nhiên hàm Vlookup vẫn còn rất nhiều sự phức tạp và hạn chế nên có rất nhiều vấn đề về lỗi khác nhau.
Trong bài viết này sẽ giải thích đơn giản về các thông báo lỗi #N/A, #NAME VÀ #VALUE của VLOOKUP cũng như các giải pháp để xử lý.
Xem nhanh
Trong công thức hàm Vlookup, thông báo lỗi #N/A (nghĩa là Not Available – “không có sẵn”) được hiển thị khi Excel không thể tìm thấy giá trị tra cứu. Có thể xuất phát bởi một số lý do sau:
Lỗi xếp nhầm chữ thường xảy ra khi bạn làm việc với lượng dữ liệu lớn bao gồm hàng ngàn dòng hoặc khi giá trị tra cứu được gõ trực tiếp vào công thức.
Nếu bạn đang sử dụng một công thức với đối sánh gần đúng (đối số range_lookup là TRUE hoặc bỏ qua), công thức Vlookup của bạn có thể trả về lỗi # N/A trong hai trường hợp:
Nếu bạn đang tìm kiếm với đối sánh chính xác (đối số range_lookup được đặt thành FALSE) và không tìm thấy giá trị chính xác, thì lỗi #N/A cũng được trả về.
Có thể bạn đã biết, một trong những hạn chế đáng kể nhất của hàm VLOOKUP là nó không thể dò tìm phía bên trái cột tra cứu, do đó cột tra cứu luôn luôn là cột bên trái ngoài cùng trong bảng tra cứu. Trong thực tế, chúng ta thường quên đi điều này và dẫn đến việc hàm VLOOKUP không hoạt động vì lỗi N/A.
Giải pháp: Nếu không thể tái cấu trúc dữ liệu để cột tra cứu là cột bên trái, bạn có thể sử dụng kết hợp các hàm INDEX và MATCH để thay thế linh hoạt cho hàm VLOOKUP. Bạn sẽ tìm thấy thông tin chi tiết và ví dụ về công thức trong hướng dẫn – Cách dùng hàm INDEX / MATCH để tra cứu các giá trị bên trái.
Một lỗi N/A khác của hàm VLOOKUP là do các con số được định dạng dưới dạng văn bản, bảng chính hoặc bảng tra cứu.
Điều này thường xảy ra khi bạn nhập dữ liệu từ một cơ sở dữ liệu bên ngoài hoặc do bạn đã gõ dấu nháy đơn trước số.
Các số cũng có thể được lưu trữ ở định dạng Chung. Trong trường hợp này, có một dấu hiệu đáng chú ý – các số được căn chỉnh ở phía bên trái của ô.
Giải pháp: Nếu đây chỉ là một số duy nhất, chỉ cần nhấp vào biểu tượng lỗi và chọn ” Convert to number ” từ danh sách tùy chọn.
Nếu nhiều số bị ảnh hưởng, hãy chọn tất cả, nhấp chuột phải vào vùng chọn, sau đó chọn Format Cells>Number tab>Number và nhấp OK.
Đây là nguyên nhân khó phát hiện nhất vì mắt thường khó có thể phát hiện ra những khoảng trống thừa đó, đặc biệt là khi làm việc với các bảng lớn nơi hầu hết các mục nhập nằm dưới cuộn.
Trường hợp 1: Khoảng trắng trong cột dò tìm (với công thức VLOOKUP)
Nếu các khoảng trống dư thừa xuất hiện trong bảng chính của bạn, bạn có thể sử dụng công thức Vlookup bằng cách lồng đối số lookup_value với hàm TRIM:
=VLOOKUP(TRIM($F2),$A$2:$C$10,3,FALSE)
Trường hợp 2: Khoảng trắng trong cột tra cứu
Nếu các khoảng trắng thừa xuất hiện trong cột tra cứu, không có cách nào để tránh lỗi VLOOKUP #N/A. Thay vì hàm VLOOKUP, bạn có thể sử dụng công thức mảng với sự kết hợp của các hàm INDEX / MATCH và TRIM:
=INDEX($C$2:$C$10,MATCH(TRUE,TRIM($A$2:$A$10)=TRIM($F$2),0))
Vì đây là một công thức mảng, đừng quên nhấn Ctrl + Shift + Enter:
Microsoft Excel hiển thị lỗi #VALUE! lỗi nếu một giá trị được trong công thức không đúng. Đối với hàm VLOOKUP, lỗi #VALUE thường mắc phải do 2 lý do sau đây.
Nên nhớ VLOOKUP không thể tra cứu các giá trị chứa 256 ký tự trở lên. Nếu các giá trị tra cứu của bạn vượt quá giới hạn này thì sẽ xuất hiện lỗi VALUE:
Giải pháp : Sử dụng công thức INDEX / MATCH tương tự để thay thế. Trong ví dụ trên, hàm INDEX / MATCH sau đây hoạt động hoàn hảo:
=INDEX(C2:C7,MATCH(TRUE,INDEX(B2:B7= F$2,0),0))
Nếu bạn lấy dữ liệu từ một bảng tính khác, bạn phải bao gồm đường dẫn đầy đủ đến tệp đó. Chính xác hơn, bạn phải kèm theo tên của tệp (bao gồm cả phần mở rộng) trong dấu ngoặc vuông [], và sau đó chỉ định tên của trang tính và dấu chấm than. Ngoài ra, bạn cũng cần phải đặt chúng trong dấu nháy đơn trong trường hợp tệp hoặc tên bảng tính có chứa khoảng trống.
Đây là cấu trúc của công thức hoàn chỉnh để thực hiện vlookup từ một sổ làm việc khác:
=VLOOKUP(lookup_value, ‘[workbook name]sheet name’!table_array, col_index_num, FALSE)
Một công thức thực sự có thể trông như sau:
=VLOOKUP($A$2,'[New Prices.xls]Sheet1′!$B:$D,3,FALSE)
Công thức trên sẽ tìm kiếm giá trị ô A2 trong cột B của Sheet1 tệp “New Prices” và trả về một giá trị phù hợp tại cột D.
Nếu bất kỳ phần tử nào của đường dẫn bị thiếu, công thức VLOOKUP của bạn sẽ không hoạt động và trả lại lỗi #VALUE (trừ khi bảng tính tra cứu hiện đang mở).
Khó có trường hợp mà nhập một số nhỏ hơn “1” để xác định cột giá trị trả về. Tuy nhiên, nó có thể xảy ra nếu đối số này được trả về bởi một số hàm Excel khác được lồng trong công thức Vlookup của bạn.
Vì vậy, nếu đối số col_index_num nhỏ hơn 1, công thức Vlookup của bạn sẽ trả về lỗi #VALUE!.
Nếu đối số col_index_num lớn hơn số cột trong mảng bảng được chỉ định, công thức Vlookup trả về lỗi #REF! lỗi.
Đây là trường hợp dễ nhất – lỗi NAME xuất hiện nếu bạn vô tình viết sai chính tả tên của hàm.
Giải pháp là rõ ràng – hãy kiểm tra chính tả:)
Ngoài việc có một cú pháp khá phức tạp, hàm VLOOKUP có nhiều hạn chế đáng kể so với bất kỳ hàm Excel khác. Do những hạn chế này, công thức Vlookup thường mang lại kết quả không như mong đợi. Dưới đây bạn sẽ tìm thấy các giải pháp cho một vài tình huống phổ biến khi VLOOKUP không thành công.
Hàm VLOOKUP không phân biệt chữ hoa và chữ thường. Vì vậy, nếu bảng của bạn có nhiều mục tương tự chỉ khác nhau chữ hoa, chữ thường, công thức Vlookup sẽ trả về giá trị được tìm thấy đầu tiên bất kể trường hợp nào.
Giải pháp : Sử dụng một hàm Excel khác có thể thực hiện tra cứu theo chiều dọc (LOOKUP, SUMPRODUCT, INDEX / MATCH) kết hợp với hàm EXACT để có thể hỗ trợ bạn tra cứu. Bạn có thể tìm thấy các giải thích chi tiết và ví dụ về công thức trong hướng dẫn này – 4 cách để tạo vlookup phân biệt chữ hoa chữ thường trong Excel .
Như bạn đã biết, hàm VLOOKUP trả về giá trị đầu tiên nó tìm thấy trong cột trả về phù hợp với giá trị tra cứu. Tuy nhiên, bạn có thể buộc nó trả về cái thứ 2, 3, 4 hoặc bất kỳ trường hợp nào mà bạn muốn. Nếu bạn cần phải nhận được tất cả các giá trị, bạn sẽ phải sử dụng kết hợp các hàm INDEX, SMALL và ROW.
Giải pháp: Các ví dụ công thức có sẵn để tải về tại đây:
Các công thức VLOOKUP sẽ không hoạt động khi một cột mới bị xóa khỏi hoặc được thêm vào bảng tra cứu. Điều này xảy ra do cú pháp của hàm VLOOKUP yêu cầu bạn cung cấp toàn bộ bảng cũng như một số nhất định cho biết bạn muốn trả về dữ liệu từ cột nào. Đương nhiên, cả bảng và số của cột trả về đều thay đổi khi bạn xóa một cột hiện có hoặc chèn một cột mới.
Giải pháp: INDEX / MATCH được dùng để giải quyết vấn đề này. Trong hàm INDEX & MATCH, bạn chỉ định các cột tra cứu và cột trả kết quả riêng biệt, kết quả là bạn có thể xóa hoặc chèn nhiều cột tùy ý mà không cần phải cập nhật mọi công thức vlookup liên quan .
Giải pháp: Luôn sử dụng tham chiếu ô tuyệt đối (với dấu $) trong vùng chọn, ví dụ: $A$2: $C$100 hoặc $A:$C. Trong thanh công thức, bạn có thể nhanh chóng chuyển đổi giữa các loại tham chiếu khác nhau bằng cách nhấn F4.
Nếu bạn không muốn để người dùng thấy tất cả các thông báo lỗi N/A, VALUE hoặc NAME, bạn có thể trả lại ô trống hoặc hiển thị nội dung của riêng bạn. Bạn có thể làm điều này bằng cách lồng công thức VLOOKUP của bạn trong hàm IFERROR trong Excel 2013, 2010 và 2007 hoặc hàm IF / ISERROR trong các phiên bản Excel trước đó.
Cú pháp của hàm IFERROR rất đơn giản:
IFERROR (giá trị, giá trị_if_error)
Bạn tiến hành nhập giá trị để kiểm tra lỗi trong đối số thứ nhất, và trong đối số thứ 2 bạn chỉ định giá trị trả về nếu lỗi xảy ra.
Ví dụ, công thức IFERROR / VLOOKUP trả về một ô trống khi không tìm thấy giá trị tra cứu:
=IFERROR(VLOOKUP($F$2,$B$2:$C$10,2,FALSE),””)
Nếu bạn thích hiển thị nội dung mà mình muốn thay vì những biểu hiện lỗi thông thường, hãy đánh chúng vào dấu ngoặc kép như thế này:
=IFERROR(VLOOKUP($F$2,$B$2:$C$10,2,FALSE),”Oops, no match is found. Please try again!”)
Hàm IFERROR có ở phiên bản Excel 2007, trong các phiên bản Excel trước bạn sẽ phải sử dụng kết hợp hàm IF và ISERROR như thế này:
=IF(ISERROR(VLOOKUP formula), “Your message if any”, VLOOKUP formula)
Ví dụ: đây là công thức IF / ISERROR / VLOOKUP tương tự với công thức IFERROR / VLOOKUP ở trên:
=IF(ISERROR(VLOOKUP($F$2,$B$2:$C$10,2,FALSE)), “”, VLOOKUP($F$2,$B$2:$C$10,2,FALSE))
Trên đây là những lỗi hay gặp trong hàm Vlookup. Học Excel Online hy vọng thông qua những hướng dẫn trên bạn có thể xử lý tất cả các lỗi có thể xảy ra của hàm Vlookup.