...
Tham số 2, ứng với tính chất dò tìm gần đúng của lookup, nó sẽ lấy giá trị cuối cùng của mảng dò tìm có kết quả là 1.
Như vậy hàm trên sẽ lấy giá trị cuối cùng của vùng lấy kết quả, tương ứng với phù hợp với tất cả các điều kiện.
Đó là chỗ lắc léo của mẹo. Giải thích hơi dài dòng. Người sử dụng cần biết đặc tính của phép dò gần đúng.
Theo nguyên tắc dò gần đúng trên mảng sắp xếp tăng đần, con toán sẽ dừng lại ở vị trí nó cho là lớn nhất và nhỏ hơn hay bằng trị cần tìm.
Ví dụ: tìm 3.2 trên mảng { 1, 2, 3, 4, 5 } thì các con số nhỏ hơn hay bằng 3.2 là 1,2,3 lớn nhất là 3. Lookup không so sánh 1,2,3 để lấy số lớn nhất. Nó cho rằng mảng đã sắp xếp cho nên cái bên phải (hoặc dưới cùng) là lớn nhất.
Khi dò mảng "mẹo" như bạn đưa ra ở trên, Lookup không thấy 1:0 mà nó chỉ thấy True:#DIV/0!
True thì nó có thể ép kiểu (lưu ý từ ép kiểu) thành 1, nhưng error thì nó không ép kiểu thành 0 như nhiều người tưởng lầm. - tôi đã từng nói hàm này có khả năng bỏ qua trị lỗi. Vậy là nó cứ dò ngược (phải qua trái, hoặc dưới lên trên) cho đến khi nó gặp một trị nhỏ hơn 2, tức là 1, tức là vị trí cuối cùng thỏa mãn các điều kiện.
Vì vậy, để hiểu công thức này, người dùng phải biết hai đặc tính của Lookup trên bảng dò:
- Khả năng bỏ qua trị lỗi. (xem chú thích)
- Tự cho rằng trị bên phải lớn hơn trị bên trái, ở dưới lớn hơn ở trên.
Chú thích Lookup chỉ bỏ qua trị lỗi chứ không bỏ qua trị 0 (nếu ép kiểu False thì ra 0)
Nếu ta tìm 2 trong mảng dò { 1, 0, #Div/0, 1, #Div/0 } thì nó cho rằng vị trí 4 (trị 1) chứa trị lớn nhất và nhỏ hơn 2
Nhưng nếu mảng dò là { 1, 0, #Div/0, 1, 0 } thì nó cho rằng vị trí 5 (trị 0) chứa trị lớn nhất và nhỏ hơn 2.
Thế nhưng mảng dò tìm đây chắc chỉ mảng 1 chiều. Nãy bác có nói mảng 2 chiều, chắc là 1 kiểu của bảng. Nhưng còn mảng 3 chiều là như thế nào, mong bác giải thích hộ.
Cái mảng ở bài #142 là mảng 2 chiều (4 dòng 2 cột)
Mảng 3 chiều thì gồm dòng/cột/vùng