Giúp em sử dụng hàm tìm kiếm

Liên hệ QC

duong_nam_dao

Thành viên chính thức
Tham gia
2/3/08
Bài viết
89
Được thích
44
Em có 1 tài liệu, nhưng khi viết hàm tìm kiếm cứ không được. Nhờ các bác giúp đỡ. Cám ơn các bác nhiều !
 

File đính kèm

Chào bạn!
Sao cách thứ 3 của bạn khi autofill xuống mà vẫn cho kết quả là "Đoàn Thị Lan Anh" thế? Liệu có gì ảnh hưởng tới nó không?

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
 

File đính kèm

Lần chỉnh sửa cuối:
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
He... he...
Hứng thú hãy tự viết hàm Dotim 2 chiều luôn...
 

File đính kèm

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
He... he...
Hứng thú hãy tự viết hàm Dotim 2 chiều luôn...

Bác càng ngày càng tiến bộ.
Tuy nhiên:
  1. Nên bẫy lỗi
  2. Không nên lãng phí nhiều bộ nhớ cho biến (cách khai báo)
  3. Nếu chỉ như trên thì nên dựa vào match để tìm sẽ nhanh hơn nhiều.
Em cũng có mấy hàm góp vui, mời các bác tham khảo (Viết từ ngày đầu bập bẹ VBA nên có nhiều cái hơi ngây ngô)

http://www.giaiphapexcel.com/forum/showthread.php?t=5130


Thân!
 
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

Trước mắt em thấy có 2 lỗi, đó là nếu trị tìm không tìm thấy thì sao, thứ 2 là độ lớn của vùng tìm và vùng trả về giá trị khác nhau thì như thế nào
 
Chưa hẵn đâu

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 (!?)

Rất mong chúng ta trao đổi tiếp


Chúc vui!
 
Web KT

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

Back
Top Bottom