Hàm lookup ở trường hợp này bị sai bạn a.
Các hàm có thể dùng như sau :
Vlookup
Index+match
Index+max
Offset+match
Indirect+max
Hlookup+...
bạn thử tìm hiểu xem sao
Ngoài các cách trên thì cũng còn 1 cách nữa khá hiệu quả, đó là VBA
Thích thì tự viết lấy 1 hàm Dotim để dợt chơi, nhanh gọn, hiệu quả và vô cùng tiện lợi:
PHP:
Option Explicit
Function Dotim(Vungtim As Range, Tritim As Variant, VungKQ As Range) As Variant
Dim i As Long
Dim Temp As Variant
For i = 1 To Vungtim.Count
If Vungtim(i) = Tritim Then Temp = VungKQ(i): Exit For
Next
Dotim = Temp
End Function
Ngoài các cách trên thì cũng còn 1 cách nữa khá hiệu quả, đó là VBA
Thích thì tự viết lấy 1 hàm Dotim để dợt chơi, nhanh gọn, hiệu quả và vô cùng tiện lợi:
PHP:
Option Explicit
Function Dotim(Vungtim As Range, Tritim As Variant, VungKQ As Range) As Variant
Dim i As Long
Dim Temp As Variant
For i = 1 To Vungtim.Count
If Vungtim(i) = Tritim Then Temp = VungKQ(i): Exit For
Next
Dotim = Temp
End Function
Cám ơn các Bác nhiều, quả là rất hay.
To Anh Okbab : Anh có thể cho vài gợi ý về bẫy lỗi và khai báo biến của hàm trên để cho tối ưu nhất, em rất biết muốn để học hỏi.
Như mình có nói, Hàm Hlookup có thể làm được như VD trên, để hiểu thêm về mảng và sự huyển chuyển của các hàm, các bạn thử xem.
Thường thì lổi xuất hiện trước, sau đó người ta mới nghĩ ra việc bẩy lổi! Chúng ta là con người, khó lường trước được hết mọi việc!
Vậy khi lổi xuất hiện ta sẽ tính cũng chưa muộn
Thường thì lổi xuất hiện trước, sau đó người ta mới nghĩ ra việc bẩy lổi! Chúng ta là con người, khó lường trước được hết mọi việc!
Vậy khi lổi xuất hiện ta sẽ tính cũng chưa muộn
Thường thì lổi xuất hiện trước, sau đó người ta mới nghĩ ra việc bẩy lổi! Chúng ta là con người, khó lường trước được hết mọi việc!
Vậy khi lổi xuất hiện ta sẽ tính cũng chưa muộn
1*/ Chỉ đúng với những người tự học như chúng ta, tôi cùng với bạn;
Còn những người được trang bị kiến thức lập trình từ trường lớp thì không thể nói vậy!
Chúng ta thử đặt ra 1 số câu hỏi sau xem sao:
* Nếu tìm không có thì sao? Hàm sẽ trả về câu "Tui không tìm thấy"; Lúc đó là khi nào?; Khi đến tận cùng của vùng tìm rồi, chứ sao?
Vòng lặp For . . .Next sẽ giúp ta điều này; khi đó biến i sẽ có giá trị Vungtim.Count +1
Vậy để tránh lỗi khi không tìm thấy, ta thêm 1 dòng lệnh
If i = Vungtim.Count +1 then DoTim = "Tui không tìm thấy"
* Đề phòng người dùng không nhập vùng tìm thì ta phài dùng dòng lệnh
Mã:
If VungTim Is Nothing then
DoTim = "Ban Chua Nhap Vung Tim, Bye!" : Exit Function
End If
Dòng này đứng trên đầu các dòng lệnh khác;
Tương tư như trường hợp 2 sẽ là biến TriTim không được nhập vô. . . .
2*/ Vấn đề khác mà mình muốn đưa ra là: Trong danh sách dò tìm có nhiều nghiệm thì sao đây;
Lúc đó ta sẽ phải viết macro tìm hết vùng cần tìm; Có ai định thử sức với việc này chăng? Việc này công thức excel dư sức, còn VBA thì sao?, chịu thua ư?
Macro này sẽ ghi các địa chỉ tìm ra trong vùng tìm đến một nơi nào đó, được không zậy?
3*/ Hàm mảng tự tạo sẽ thay macro ở mục trên sẽ có nội dung như thế nào?
4*/ Cái này chàng BAB đề cập đến, đó là dùng các hàm (công thức) dò tìm; Trong VBA còn có phương thức FIND(*), Ai trong chúng ta thử sức với phương thức này chăng; có thể cũng nhanh không kém hàm tìm kiếm mà BAP khuyến cáo chúng ta dùng trong VBA đâu (!?)