Page 4 of 4
Xem nhanh
Tiếp tục với bài toán trên. Bây giờ, ta sẽ viết lại logic công thức:
=LOOKUP(1,{1;1;1;1;1;1;1},mảng tương ứng)
Hoặc, để dễ minh họa hơn, ta sẽ dùng MATCH trong trường hợp này:
=MATCH(1,{1;1;1;1;1;1;1},1)
Bạn nghĩ kết quả của hàm MATCH trên có phải là 4 (vị trí ở giữa theo quy tắc của Binary Search) không?
Câu trả lời là Không. Kết quả là 7, vị trí cuối cùng.
Tại sao lại là cuối cùng? Có phải nó rất mâu thuẫn với Binary Search?
Để làm rõ hơn, giờ ta sẽ có 1 mảng như này:
[1,1,1,1,1,0,1]
Khi thực hiện tìm kiếm với Binary Search, kết quả trả về là 5 (ngay bên trái số 0) thay vì 7 là giá trị cuối cùng. Bây giờ, thay vị trí trung tâm của mảng thành 2:
[1,1,1,2,1,0,1]
Kết quả trả về là 3, nằm ngay bên trái số 2.
Và khi thay vị trí trung tâm của mảng thành 0:
[1,1,1,0,1,0,1]
Kết quả là 7, vị trí cuối cùng.
Tại sao lại như vậy? Dưới đây sẽ là kết luận:
Mình đã đi hỏi rất nhiều bên, cả những moderator của Excel community cũng nói rằng phải xem xét vấn đề này vì nó thực sự không dễ để vừa trả lời vừa giữ bí mật về cách viết hàm. Tuy nhiên thì mình cũng có một assumption khá chính xác như sau:
Khi giá trị được tìm thấy trong mảng, công thức sẽ không dừng lại và trả ngay ra giá trị đó. Bởi mảng được sắp xếp sẽ có 1 tính chất đó là các giá trị trùng lặp nhau chắc chắn sẽ nằm cạnh nhau, nên công thức sẽ tiếp tục duyệt về bên phải để tìm các giá trị trùng lặp khác. Khi gặp một giá trị khác với giá trị đã tìm được, khi đó công thức sẽ trả về giá trị nằm gần nhất về bên trái.
Mình rút ra từ bài viết này: https://stackoverflow.com/a/13197618
Hình ảnh minh họa như sau:
Và đó là cách tìm kiếm xấp xỉ hoạt động. Các bạn đã rõ hơn chưa nào?
Quên mất, còn lời khuyên. Mình có một số thứ rút ra như sau:
Đọc thêm những bài viết liên quan nhé:
Các hàm Lookup trong Excel: https://blog.hocexcel.online/ham-hlookup-nen-su-dung-hlookup-hay-index-ket-hop-match-se-hay-hon.html
LOOKUP nâng cao trong Excel: https://blog.hocexcel.online/tai-sao-ham-lookup-lai-tim-2-va-1-la-gi-9-99e307-la-gi.html
INDEX/MATCH trả về hình ảnh: https://blog.hocexcel.online/tai-sao-ham-lookup-lai-tim-2-va-1-la-gi-9-99e307-la-gi.html