Nguyễn Đức Mão
Thành viên mới

- Tham gia
- 15/4/20
- Bài viết
- 5
- Được thích
- 2
File đính kèm
Lần chỉnh sửa cuối:
Bạn nên sửa những từ viết tắt đi. Muốn không báo lỗi thì thay $I$16:$I$21 bằng 1 hàm nào đó có thể chứa đúng vùng có dữ liệu cột I ấy. chẳng hạn hàm Offset coi- Em xin chào Các A/c, e có vấn đề này nhờ A/c xem giúp
- Ô H16 Range của em từ $I$16:$I$21 --> Thì dữ liệu k báo lỗi, nhưng sang ô H17 e tăng Range qua những Cell trống là không tìm kiếm được nữa. E xin hướng dẫn cách khắc phục lỗi này với ạ
View attachment 299483View attachment 299484
Không phải do vùng chứa dữ liệu. Nó làm vậy là tại chưa đủ điều kiện, đưa đủ điều kiện thì nó sẽ ra đúng.... Muốn không báo lỗi thì thay $I$16:$I$21 bằng 1 hàm nào đó có thể chứa đúng vùng có dữ liệu cột I ấy. chẳng hạn hàm Offset coi
Cảm ơn bạn nhé. mình làm được rồi, tự dưng không nghĩ ra cách dùng NameBạn nên sửa những từ viết tắt đi. Muốn không báo lỗi thì thay $I$16:$I$21 bằng 1 hàm nào đó có thể chứa đúng vùng có dữ liệu cột I ấy. chẳng hạn hàm Offset coi
A Có thể giúp em thêm điều kiện để công thức này ra đúng được k ạ. Trên kia e có dùng Name để được theo ý mình rùi, nhưng e mún học hỏi thêm về cách thêm điều kiện về công thức nàyKhông phải do vùng chứa dữ liệu. Nó làm vậy là tại chưa đủ điều kiện, đưa đủ điều kiện thì nó sẽ ra đúng.
Bạn cứ liệt kê điều kiện bạn muốn dò tìm.Cảm ơn bạn nhé. mình làm được rồi, tự dưng không nghĩ ra cách dùng Name
View attachment 299491
Bài đã được tự động gộp:
A Có thể giúp em thêm điều kiện để công thức này ra đúng được k ạ. Trên kia e có dùng Name để được theo ý mình rùi, nhưng e mún học hỏi thêm về cách thêm điều kiện về công thức này
Điều kiện không phải do có sẵn. Điều kiện tôi nói nó sinh ra bởi việc kéo dài thêm thành nhiều dòng. Công thức không được viết để đề phòng việc này.Bạn cứ liệt kê điều kiện bạn muốn dò tìm.
1. Dải ô i16:i30 chứa dữ liệu ở ô bạn muốn dò tìm.
2. ...
Đưa hết các điều kiện vào hàm lookup là tìm được thôi.
Tôi vẫn nói là người hay viết tắt thì cũng có tật hời hợt và cẩu thả....
1. Dải ô i16:i30 chứa dữ liệu ở ô bạn muốn dò tìm.
...
Cái này hay đó anh!Chú thích: vì thớt chơi láng, dùng hàm Lookup chứ bài này chỉ cần dùng VLookup, hiệu quả hơn. Phần nới rộng thì mới dùng Offset để nới.
VLookup("*"&$i16&"*", $E$16:$I$21, 5, 0)
Em chơi với! Thêm cách 'lấy mẹo trị mẹo'Nên nhớ rằng sử dụng hàm Lookup(2, 1/...., ...) là sử dụng một mẹo dựa vào tính chất bỏ qua lỗi và tính dò nhị phân của Lookup....Hàm Find tìm "" trong bất cứ chuỗi nào cũng trả về 1.
Chân thành cảm ơn anh. Em sẽ cẩn trọng hơn về cách dùng từ ngữ, đặc biệt là viết tắt.Tôi vẫn nói là người hay viết tắt thì cũng có tật hời hợt và cẩu thả.
Thớt không phải là người không giỏi Excel. Chỉ vì cái tội lười cho nên không chịu debug. Nếu debug thì đã biết mình bị vướng chỗ nào.
Trước đến giờ em dùng hàm Lookup kiểu theo bản năng, gọi là học vẹt theo các cao thủ trên diễn đàn nên chưa hiểu hết được bản chất của công thức này vì thế nên Debug không ra được.Nên nhớ rằng sử dụng hàm Lookup(2, 1/...., ...) là sử dụng một mẹo dựa vào tính chất bỏ qua lỗi và tính dò nhị phân của Lookup.
Biểu thức 1/... trả về một mảng chỉ có True (1/1) hoặc Error (1/0). Vì tính chất bỏ qua lỗi, Lookup sẽ chọn lấy điểm cuối cùng có trị số nhỏ hơn 2, tức là True ép kiểu sang Int.
Khi nới rộng vùng thì trị tìm bao gồm ô trống, tức là "". Hàm Find tìm "" trong bất cứ chuỗi nào cũng trả về 1.
Vì vậy, nếu bao gồm phần nới thêm thì các chỗ nới thêm sẽ trả về 1. Và như vậy, Lookup sẽ trả về trị ô trống, tức 0.
Giải pháp:
Vì nới rộng vùng sẽ cộng cả ô trống cho nên lúc dò phải tự mình thêm điều kiện <>"". (tôi nói điều kiện này không có từ đầu, mà do cách sử dụng Lookup của mình nảy sinh ra, phải không?)
Bây giờ thì bạn chỉ cần thêm điều kiện ô cần dò <>"".
Dữ liệu em bị ẩn nên thay đối số 3 thành 5 là ăn luôn. Nhiều lúc mình cứ đi tìm cái cao siêu ở đâu trong khi thực tế chỉ cần cái đơn giản trước mặt là giải quyết được vấn đề rồi. Chân thành cảm ơn anh nhiều ạChú thích: vì thớt chơi láng, dùng hàm Lookup chứ bài này chỉ cần dùng VLookup, hiệu quả hơn. Phần nới rộng thì mới dùng Offset để nới.
VLookup("*"&$i16&"*", $E$16:$I$21, 3, 0)
Bạn có thể giải thích giùm mình vì sao thêm bất kỳ 1 ký tự nào (Ví dụ: "Em chơi với! Thêm cách 'lấy mẹo trị mẹo'
=LOOKUP(2,1/(FIND($I$16:$I$300,""&E16)-1),$I$16:$I$300)
Bạn xem quá trình hình thành kết quả trong thức nha, vùng L34: O50 file kèm.Bạn có thể giải thích giùm mình vì sao thêm bất kỳ 1 ký tự nào (Ví dụ: "" như của bạn chẳng hạn) trước đối số "Within Text" của hàm Find, thì nó lại ra được kết quả như mình mong muốn, còn bỏ đi là hàm báo N/A luôn
![]()
Khi bạn dùng FIND($I$16:$I$300,E16)-1 không ghép 1 ký tự bất kỳ trước E16 công thức sẽ báo lỗi vì:Bạn có thể giải thích giùm mình vì sao thêm bất kỳ 1 ký tự nào (Ví dụ: "" như của bạn chẳng hạn) trước đối số "Within Text" của hàm Find, thì nó lại ra được kết quả như mình mong muốn, còn bỏ đi là hàm báo N/A luôn
![]()
Cảm ơn bạn rất nhiều nhé, chúc bạn ngày đầu tuần vui vẻ và năng lượngKhi bạn dùng FIND($I$16:$I$300,E16)-1 không ghép 1 ký tự bất kỳ trước E16 công thức sẽ báo lỗi vì:
- Các tên thuốc "Vắc xin..." trong dữ liệu E16: E21 đều phát sinh ngay 'vị trí đầu tiên', nên Find() sẽ trả kết quả là 1. Giả sử, E16 như sau: "Tên thuốc: Vắc xin.....", Find() sẽ trả về vị trí phát hiện chuỗi "Vắc xin ..." là 12, vì trước nó là chuỗi "Tên thuốc: " có 11 ký tự (kể cả chuỗi trắng). Như vậy, với dữ liệu ban đầu của bạn các vị trí tên thuốc "Vắc xin...." đều là 1, khi bạn thêm ký tự bất kỳ trước nó, như: "@"&E16--> "@Vắc xin....", thì Find() sẽ trả về là 2.
- Như anh @VetMini hướng dẫn bài trên: Các dòng trống khi bạn kéo dài vùng dữ liệu I16: I30 (chẳng hạn), nó tương tự như lệnh Find( "", "@"&E16) và luôn cho kết quả là 1.
- Từ trên bạn sẽ thấy: các dòng nào tìm thấy tên thuốc thì kết quả là 2, không tìm thấy thì báo lỗi, còn các dòng trống là 1. Nếu không nối thêm ký tự bất kỳ trước E16, thì sau khi trừ 1 dòng thỏa hay dòng trống cũng đều bằng 0.
Vậy, đem kết quả có ký tự nối đó trừ 1 thành: dòng thỏa còn lại 1, không tìm thấy thì vẫn báo lỗi, dòng trống bằng 0. Dùng mảng này vào Lookup(2, 1/ "mảng kết quả" ,...) thì dòng trống do 1/0 sẽ báo lỗi #DIV/0!, và Lookup() sẽ chỉ tìm kết quả nào có giá trị thỏa.
Thân
Cảm ơn bạn rất nhiều nhé, chúc bạn ngày đầu tuần vui vẻ và năng lượngBạn xem quá trình hình thành kết quả trong thức nha, vùng L34: O50 file kèm.
Thân
50 vé chỉ đủ ăn hai lần bánh mì bèo (vệ đường) với cà phê bắp rang (trên 50% đồ ri-sai-cô từ cà phê phin, cộng bắp rang khét)Cái này hay đó anh!
Em chơi với! Thêm cách 'lấy mẹo trị mẹo'
=LOOKUP(2,1/(FIND($I$16:$I$300,""&E16)-1),$I$16:$I$300)
Em chả thèm tính bao nhiêu "trăm k", "hai ba xị" hoặc "vài chục chai" như cái tay gì đó ở bài #2 gợi ý, vì giá bèo (nhèo) quá! Hổng xứng "chất xám" bỏ ra. Chắc là "tiền nào của đó" quá!
Anh em mình mỗi người "lụm" 50 "vé" nha anh!
Khì khì khì
(Thói quen giờ xài "vé" lớn "vé" nhỏ không hà, nên bị liệu)