Nhờ các anh chị xem giúp lỗi #N/A của Hàm VLOOKUP! (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

QuocPhong

Learning to be!
Tham gia
21/11/07
Bài viết
256
Được thích
247
Nhờ các anh chị xem giúp lỗi #N/A của Hàm VLOOKUP như trong file đính kèm. Giá trị tìm kiếm và cột dò tìm đều khớp nhau mà hàm vẫn cứ báo lỗi #N/A. Cám ơn các anh chị.
 

File đính kèm

Do bộ gõ khác nhau đó bạn, bạn lấy hàm len check xem số kí tự khác nhau đấy. Mình cũng ngồi hóng cao nhân.
 
Copy Tên sheet 1 paste vào sheet 3 sẽ biết nguyên nhân...
 
Nhờ các anh chị xem giúp lỗi #N/A của Hàm VLOOKUP như trong file đính kèm. Giá trị tìm kiếm và cột dò tìm đều khớp nhau mà hàm vẫn cứ báo lỗi #N/A. Cám ơn các anh chị.
Bạn thử dùng công thức Len("Tạ Hữu An") của 2 sheet. Nó ra số kí tự khác nhau. Đó là nguyên nhân ấy
 
Cám ơn anh. Cho em hỏi có cách nào xử lý để dữ liệu 2 cột họ và tên khớp nhau không ạ?

Chúng đang khớp nhau chuẩn chỉ 100% rồi đó thôi, còn cần làm gì đâu bạn?

Không phải bạn thử hai tên = nhau = True đó. Cứ thế làm việc bình thường thôi. Bạn đừng nghĩ ngợi phức tạp lên như đang nghĩ.
 
Chúng đang khớp nhau chuẩn chỉ 100% rồi đó thôi, còn cần làm gì đâu bạn?

Không phải bạn thử hai tên = nhau = True đó. Cứ thế làm việc bình thường thôi. Bạn đừng nghĩ ngợi phức tạp lên như đang nghĩ.
So sánh dữ liệu 2 cột thì hoàn toàn giống nhau, nhưng khi sử dụng vlookup thì bị lỗi N/A. Em vẫn chưa hiểu tại sao? Anh giúp em nhé! Em cảm ơn.
 
Em chưa hiểu tại sao dùng hàm Vlookup thì bị lỗi N/A?
Trong công thức của chủ thớt =VLOOKUP(C2;Danhsach;7;0) có

C2 = Tạ Hữu An có 12 ký tự (dùng hàm LEN) - unicode tổ hợp.

Trong khi đó ở bảng dò Danhsach có C2 = Tạ Hữu An có 9 ký tự - unicode dựng sẵn.

Mạc dù công thức
Mã:
=Sheet3!C2=Sheet1!C2
trả về TRUE nhưng VLOOKUP CHẮC CHẮN trả về #N/A.

Chỉ có 2 cách xử lý:
1. Dùng các hàm khác vd. INDEX + MATCH. Lúc này không cần sửa dữ liệu.

2. Nếu muốn dùng VLOOKUP thì BẮT BUỘC phải ĐỒNG BỘ dữ liệu. Không thể để dữ liệu như cũ rồi mơ là VLOOKUP trả về giá trị đúng. Không có chuyện ấy đâu, quên đi.

Nhấc lại: hoặc dùng hàm khác hoặc nếu dùng VLOOKUP thì BẮT BUỘC phải ĐỒNG BỘ dữ liệu. Không có chuyện dữ liệu khác nhau về độ dài mà VLOOKUP trả về giá trị đúng đâu. Quên đi.
Bài đã được tự động gộp:

Cám ơn anh. Cho em hỏi có cách nào xử lý để dữ liệu 2 cột họ và tên khớp nhau không ạ?
Nếu bạn muốn dùng VLOOKUP thì BẮT BUỘC bạn phải ĐỒNG BỘ dữ liệu (nếu dùng vd. INDEX + MATCH thì không cần). Theo tôi tốt nhất là bạn chuyển dữ liệu ở cột C của 2 sheet cùng về unicode dựng sẵn. Bạn có thể dùng Unikey để chuyển.
 
Lần chỉnh sửa cuối:
Nhờ các anh chị xem giúp lỗi #N/A của Hàm VLOOKUP như trong file đính kèm. Giá trị tìm kiếm và cột dò tìm đều khớp nhau mà hàm vẫn cứ báo lỗi #N/A. Cám ơn các anh chị.
Cột họ tên ở sheet1 và sheet 3 khác nhau nên k Vlookup được.
Copy lại toàn bộ tên ở Sheet 1 qua Sheet 3 hoặc Ngược lại thì sẽ nhảy bình thường
 
...Mạc dù công thức
Mã:
=Sheet3!C2=Sheet1!C2
trả về TRUE nhưng VLOOKUP CHẮC CHẮN trả về #N/A.
...
Toán tử so sánh "=" trong bảng tính chủ yếu chỉ so sánh trị số. Khi so sánh chuỗi thì khá phức tạp.
Vì vậy, MS có hàm EXACT để so sánh và debug trường hợp như VLOOKUP.

Túm lại, khi so sánh chuỗi tiếng Việt, nếu nghi có gì lạ trong phông chữ thì dùng hàm EXACT để khỏi lầm lẫn.

1649250364199.png

Ảnh trên cho thấy đối với hàm Exact, (Sheet1)"Tạ Hữu An" khác với (Sheet3)"Tạ Hữu An". Và đó là cách so sánh của VLookup.
Để ý dòng 12, hàm Exact cho rằng (Sheet1)"Chu Minh Huy" giống (Sheet3)"Chu Minh Huy". Và VLookup cũng đồng ý.
 
Toán tử so sánh "=" trong bảng tính chủ yếu chỉ so sánh trị số. Khi so sánh chuỗi thì khá phức tạp.
Vì vậy, MS có hàm EXACT để so sánh và debug trường hợp như VLOOKUP.

Túm lại, khi so sánh chuỗi tiếng Việt, nếu nghi có gì lạ trong phông chữ thì dùng hàm EXACT để khỏi lầm lẫn.

View attachment 274112

Ảnh trên cho thấy đối với hàm Exact, (Sheet1)"Tạ Hữu An" khác với (Sheet3)"Tạ Hữu An". Và đó là cách so sánh của VLookup.
Để ý dòng 12, hàm Exact cho rằng (Sheet1)"Chu Minh Huy" giống (Sheet3)"Chu Minh Huy". Và VLookup cũng đồng ý.
Không có chỗ nào tôi viết là "=" hoạt động theo lôgíc này hay lôgíc khác. Vì tôi không quan tâm nó làm gì sau cánh gà. Tôi chỉ muốn lưu ý là nhiều khi X = Y nhưng VLOOKUP không tìm thấy X trong mảng chứa Y. Tức tôi muốn lưu ý rằng nhiều khi "nhìn thế mà không phải thế". Thế thôi. Mọi cái tôi không viết rõ trên giấy trắng mực đen thì không nên suy diễn.

Tôi viết là 2 chuỗi có độ dài khác nhau mà VLOOKUP coi như khác nhau thì tôi thấy có thể hiểu được. Nhưng tôi không nói là nếu 2 chuỗi có độ dài khác nhau thì VLOOKUP LUÔN LUÔN không chấp nhận.

Tóm lại tôi chỉ cho rằng với dữ liệu nguồn và dữ liệu tìm kiếm khác kiểu thì chuyện không chấp nhận bởi VLOOKUP tôi cho là có lý do chính đáng. Nếu ai đó cho đó không là lý do chính đáng mà do VLOOKUP quá quắt thì tôi cũng tôn trọng ý kiến của người ta. Mỗi người tự đánh giá xem lý do có thuyết phục hay không thôi. Và tôi đề xuất đồng bộ dữ liệu. Tôi không phân tích, không tìm hiểu những vấn đề khác. Ai thích mở rộng và bàn những vấn đề khác thì miễn gọi tên tôi.
 
Lần chỉnh sửa cuối:
Không có chỗ nào tôi viết là "=" hoạt động theo lôgíc này hay lôgíc khác. Vì tôi không quan tâm nó làm gì sau cánh gà. Tôi chỉ muốn lưu ý là nhiều khi X = Y nhưng VLOOKUP không tìm thấy X trong mảng chứa Y. Tức tôi muốn lưu ý rằng nhiều khi "nhìn thế mà không phải thế". Thế thôi. Mọi cái tôi không viết rõ trên giấy trắng mực đen thì không nên suy diễn.
...
Xin lỗi quên nói trước. Tôi không chỉ trích gì trong bài #14 cả. Bài ấy nói về VLookup và Index+Match.
Tôi chỉ quote chỗ đó để có chỗ đi tiếp. Không ngờ gây khó hiểu hơn.

Chủ yếu tôi muốn thêm rằng "muốn xem hai chuỗi có thực giống nhau thì dùng hàm Exact". Phần test chứ không phải phần thực hiện. Dù lý do gì, tôi vẫn xin lỗi bác như sau:

... Tôi không phân tích, không tìm hiểu những vấn đề khác. Ai thích mở rộng và bàn những vấn đề khác thì miễn gọi tên tôi.
Tôi chấp nhận bài học:
1. tiết giảm thói ham mở rộng
2. cẩn thận khi trích dẫn.
 
Lần chỉnh sửa cuối:
Em cảm ơn. Chúc anh luôn vui, khỏe.

Mình giải thích thêm bài #12.

... Hiểu đơn giản là cái chuỗi đem đi tìm trong hàm Vlookup() kia nó không tìm thấy trong bảng dữ liệu tra cứu, vậy nên theo đúng hướng dẫn về hàm Vlookup() của Microsoft chính chủ sẽ trả về #N/A.

Tại sao mắt người nhìn thấy giống nhau nhưng hàm Vlookup() không tìm ra thì chỉ có: Các kỹ sư Microsoft viết code hàm Vlookup() đó biết, hoặc ai đó có khả năng mổ bụng code hàm Vlookup() của Micrsoft và đọc hiểu code là gì. Bởi hiện tại không có tài liệu công bố nào của Microsoft công khai code hàm Vlookup() để mọi người cùng ngâm cứu.

Không chỉ hàm Vlookup() cũng dính chưởng này mà hàm Match() cũng dính chưởng này, nên dùng Match() với cái chuỗi kia trả về #N/A, không làm ăn được gì sứt.

Cái vụ chữ nghĩa này gần đây cũng có một thớt như vậy đó, và tất nhiên bí kíp gia truyền để trị chúng rất đơn giản như mình đã làm ở trên.

 
Mình giải thích thêm bài #12.

... Hiểu đơn giản là cái chuỗi đem đi tìm trong hàm Vlookup() kia nó không tìm thấy trong bảng dữ liệu tra cứu, vậy nên theo đúng hướng dẫn về hàm Vlookup() của Microsoft chính chủ sẽ trả về #N/A.

Tại sao mắt người nhìn thấy giống nhau nhưng hàm Vlookup() không tìm ra thì chỉ có: Các kỹ sư Microsoft viết code hàm Vlookup() đó biết, hoặc ai đó có khả năng mổ bụng code hàm Vlookup() của Micrsoft và đọc hiểu code là gì. Bởi hiện tại không có tài liệu công bố nào của Microsoft công khai code hàm Vlookup() để mọi người cùng ngâm cứu.

Không chỉ hàm Vlookup() cũng dính chưởng này mà hàm Match() cũng dính chưởng này, nên dùng Match() với cái chuỗi kia trả về #N/A, không làm ăn được gì sứt.

Cái vụ chữ nghĩa này gần đây cũng có một thớt như vậy đó, và tất nhiên bí kíp gia truyền để trị chúng rất đơn giản như mình đã làm ở trên.

Bí kíp quá tuyệt, lúc trước không để ý giờ xem lại mới thấy phương cách bí ẩn nhưng tuyệt vời ngài Bill dùng xử lý cho bộ font đặc biệt, tiếc rằng có nhiều bí mật của Excel ngài Bill không công bố rộng rải khiến nhiều người phải bơi trong ma trận Excel :)
 
Xin lỗi quên nói trước. Tôi không chỉ trích gì trong bài #14 cả. Bài ấy nói về VLookup và Index+Match.
Tôi chỉ quote chỗ đó để có chỗ đi tiếp. Không ngờ gây khó hiểu hơn.

Chủ yếu tôi muốn thêm rằng "muốn xem hai chuỗi có thực giống nhau thì dùng hàm Exact". Phần test chứ không phải phần thực hiện. Dù lý do gì, tôi vẫn xin lỗi bác như sau:


Tôi chấp nhận bài học:
1. tiết giảm thói ham mở rộng
2. cẩn thận khi trích dẫn.
Nhưng tôi không hiểu bác lôi EXACT vào đây để làm gì. Mọi người thắc mắc là "nhìn" 2 chuỗi Tạ Hữu An như nhau mà VLOOKUP trả về lỗi. Vậy thì tôi giải thích là nhìn như nhau nhưng thực ra chúng khác nhau về bản chất và độ lớn cũng thấy rõ là khác nhau. Bác lôi EXACT ra rồi đưa ví dụ CHU MINH HUY. Chu Minh Huy thì không chỉ nhìn giống nhau mà về bản chất rõ ràng giống nhau y như 2 giọt nước.
Còn chuyện "=" tôi lôi ra để ý thức cho một số bạn thôi. Người ta có thể kiểm tta bằng "=" rồi thấy chúng bằng nhau nên có thể thắc mắc. Vì thế tôi nhắc đến "=" là để lần sau khỏi thắc mắc. Vì nhiều khi "nhìn thế mà không phải là thế".

Ngoài ra EXACT chỉ trả về FALSE chứ không nói tại sao Sheet1!C2 khác Sheet3!C2. Nói mọi người dùng LEN và giải thích unicode dựng sẵn và tổ hợp thì mọi người hiểu ngay là TẠI SAO. Nhiều khi nói là 2 chuỗi khác nhau khi rõ ràng nhìn chúng như nhau thì nhiều người vẫn thấy chưa đủ. Họ có thể tò mò muốn biết TẠI SAO chúng khác nhau. EXACT không đưa ra câu trả lời cho câu hỏi TẠI SAO.

Chuyện mắt nhìn y như nhau mà VLOOKUP không tìm thấy như vậy là đã sáng tỏ. Vấn đề mấu chốt là xử lý. Ngoài việc xử dụng các hàm khác + với xoay xở mà INDEX + MATCH tôi có ghi rõ chỉ là ví dụ (1. Dùng các hàm khác vd. INDEX + MATCH. Lúc này không cần sửa dữ liệu) thì theo tôi cách khôn ngoan nhất là đồng bộ dữ liệu. Và cũng là cách duy nhất nếu muốn dùng VLOOKUP. Nếu ai có cách không đồng bộ dữ liệu mà vẫn dùng được VLOOKUP ngắn gọn thì tôi sẽ rút lại lời này, công khai trước hàng trăm nghìn thành viên của GPE. Tôi là người biết nhận sai nếu thực sự sai. Toán hay code cũng như nhau thôi, sai thì sẽ chỉ ra được sai, chỉ ra được lỗi, không cãi chầy cối được. Và khi sai hay đúng hơn là nhầm lẫn thì tôi đã từng nhiều lần xin lỗi trên GPE ***, không như rất nhiều người không bao giờ nói được lời xin lỗi. Nhưng nếu là tranh luận đàng hoàng.

***








 
Lần chỉnh sửa cuối:
Nhưng tôi không hiểu bác lôi EXACT vào đây để làm gì. Mọi người thắc mắc là "nhìn" 2 chuỗi Tạ Hữu An như nhau mà VLOOKUP trả về lỗi. Vậy thì tôi giải thích là nhìn như nhau nhưng thực ra chúng khác nhau về bản chất và độ lớn cũng thấy rõ là khác nhau. Bác lôi EXACT ra rồi đưa ví dụ CHU MINH HUY. Chu Minh Huy thì không chỉ nhìn giống nhau mà về bản chất rõ ràng giống nhau y như 2 giọt nước.
...
Tôi suy nghĩ không giống nhiều người trên diễn đàn này.
Tôi làm việc với Excel chung cùng với tụi Tây, trong ngành quản trị, kinh doanh và dịch vụ. Do đó tôi quen với cách suy nghĩ và lý luận của tụi nó. Lưu ý vấn đề ở điểm này, tức đường lối suy nghĩ này, không phải đúng hay sai, mà là thói quen.

Túm lại là cũng có những lúc tôi nhận thức sai, không phù hợp với đối tượng và/hoặc khán giả vấn đề trước mắt.
 
Tôi suy nghĩ không giống nhiều người trên diễn đàn này.
Tôi làm việc với Excel chung cùng với tụi Tây, trong ngành quản trị, kinh doanh và dịch vụ. Do đó tôi quen với cách suy nghĩ và lý luận của tụi nó. Lưu ý vấn đề ở điểm này, tức đường lối suy nghĩ này, không phải đúng hay sai, mà là thói quen.

Túm lại là cũng có những lúc tôi nhận thức sai, không phù hợp với đối tượng và/hoặc khán giả vấn đề trước mắt.
Nhưng ở đây là vấn đề cụ thể mà. Tôi không bàn chuyện chung chung. Người ta nhìn bằng mắt thấy 2 chuỗi Tạ Hữu An là "y hệt nhau" và họ thắc mắc tại sao VLOOKUP lại trả về lỗi. EXACT chỉ trả về FALSE, không một lời giải thích TẠI SAO lại False. Tất nhiên EXACT không có nhiệm vụ giải thích gì cả. Nhưng một khi người ta cần một lời giải thích thì theo tôi lôi EXACT ra không giải quyết được gì cả. Tôi cho là người ta vẫn sẽ thấy chưa được giải thích. Tôi cũng có thể sai, vì có người chả tò mò đâu. Nhưng tôi không muốn CHỈ phán là 2 chuỗi khác nhau nên VLOOKUP trả về lỗi. Tôi muốn đưa ra mội lời giải thích TẠI SAO mà tôi cho là đủ thuyết phục. Tất nhiên cái "tôi cho là" cũng chỉ là đánh giá chủ quan thôi, không phải là chân lý.
 
Nhưng ở đây là vấn đề cụ thể mà. Tôi không bàn chuyện chung chung. Người ta nhìn bằng mắt thấy 2 chuỗi Tạ Hữu An là "y hệt nhau" và họ thắc mắc tại sao VLOOKUP lại trả về lỗi. EXACT chỉ trả về FALSE, không một lời giải thích TẠI SAO lại False. Tất nhiên EXACT không có nhiệm vụ giải thích gì cả. Nhưng một khi người ta cần một lời giải thích thì theo tôi lôi EXACT ra không giải quyết được gì cả. Tôi cho là người ta vẫn sẽ thấy chưa được giải thích. Tôi cũng có thể sai, vì có người chả tò mò đâu. Nhưng tôi không muốn CHỈ phán là 2 chuỗi khác nhau nên VLOOKUP trả về lỗi. Tôi muốn đưa ra mội lời giải thích TẠI SAO mà tôi cho là đủ thuyết phục. Tất nhiên cái "tôi cho là" cũng chỉ là đánh giá chủ quan thôi, không phải là chân lý.
Cụ thể của tôi khác cụ thể của bác.
Chung quy chỉ do tôi đặt vị trí của mình sai. Tôi ngỡ quý vị ở đây có thể làm việc ở môi trường giống tôi.

Vị trí ở đây là người làm việc với đống dữ liệu kia:
- Bác sẽ chỉnh dữ liệu cho đồng bộ để làm việc tiếp. Vì bác hiểu các dạng của phông. Và chỉ cần so sánh độ dài của chuỗi là biết cái nào giống cái nào.
- Tôi sẽ mang dữ liệu ấy trở lại bên cung cấp và bảo "dữ liệu của quý vị cào trên mạng (hoặc phần mềm gì đó) ra tùm lum hết. Yêu cầu đồng bộ lại cho tôi". Và tôi cần hàm Exact để chứng minh.
 
Trong công thức của chủ thớt =VLOOKUP(C2;Danhsach;7;0) có

C2 = Tạ Hữu An có 12 ký tự (dùng hàm LEN) - unicode tổ hợp.

Trong khi đó ở bảng dò Danhsach có C2 = Tạ Hữu An có 9 ký tự - unicode dựng sẵn.

Mạc dù công thức
Mã:
=Sheet3!C2=Sheet1!C2
trả về TRUE nhưng VLOOKUP CHẮC CHẮN trả về #N/A.

Chỉ có 2 cách xử lý:
1. Dùng các hàm khác vd. INDEX + MATCH. Lúc này không cần sửa dữ liệu.

2. Nếu muốn dùng VLOOKUP thì BẮT BUỘC phải ĐỒNG BỘ dữ liệu. Không thể để dữ liệu như cũ rồi mơ là VLOOKUP trả về giá trị đúng. Không có chuyện ấy đâu, quên đi.

Nhấc lại: hoặc dùng hàm khác hoặc nếu dùng VLOOKUP thì BẮT BUỘC phải ĐỒNG BỘ dữ liệu. Không có chuyện dữ liệu khác nhau về độ dài mà VLOOKUP trả về giá trị đúng đâu. Quên đi.
Bài đã được tự động gộp:


Nếu bạn muốn dùng VLOOKUP thì BẮT BUỘC bạn phải ĐỒNG BỘ dữ liệu (nếu dùng vd. INDEX + MATCH thì không cần). Theo tôi tốt nhất là bạn chuyển dữ liệu ở cột C của 2 sheet cùng về unicode dựng sẵn. Bạn có thể dùng Unikey để chuyển.
Em cảm ơn anh đã chia sẻ. Lại học thêm được nhiều cái. :)
 

Bài viết mới nhất

Back
Top Bottom