Header ads

Header ads
» » Hàm dò tìm nâng cao - Lập trình VBA trong Excel!

Với hàm Vlookup thông thường, chúng ta chỉ sử dụng để dò tìm giá trị trong vùng dữ liệu từ trái qua phải, từ trên xuống dưới.


Để dò tìm giá trị từ phải qua trái thì ta phải kết hợp với 2 hàm là MacthIndex. Nhưng vẫn dò tìm từ trên xuống dưới.

Với hàm VlookupD, chúng ta sẽ giải quyết được vấn đề này và còn vài chức năng khác nữa :


VlookupD(Giá trị tìm kiếm, Vùng dò tìm, Thứ tự cột trả về, Phía dò tìm, Loại dò tìm, Điều kiện dò tìm)

- Giá trị dò tìm : Là giá trị dùng để tìm kiếm.

- Vùng dò tìm : Là vùng dữ liệu chứa giá trị tìm kiếm và giá trị trả về khi tìm thấy.

- Thứ tự cột trả về : Không bắt buộc, mặc định là 1. Là thứ tự của cột chứa giá trị trả về trong vùng dữ liệu.
+ Nếu Cột dò tìm là cột đầu tiên bên trái của Vùng dữ liệu thì Thứ tự được tính từ trái qua phải.
+ Nếu Cột dò tìm là cột cuối cùng bên phải của Vùng dữ liệu thì Thứ tự được tính từ phải qua trái.

- Phía dò tìm : Không bắt buộc, mặc định là 1. Phía dò tìm có 4 giá trị :
+ 1 : Cột dò tìm là cột đầu tiên bên trái vùng dữ liệu, dò tìm từ trên xuống dưới.
+ 2 : Cột dò tìm là cột đầu tiên bên trái vùng dữ liệu, dò tìm từ dưới lên trên.
+ 3 : Cột dò tìm là cột cuối cùng bên phải vùng dữ liệu, dò tìm từ trên xuống dưới.
+ 4 : Cột dò tìm là cột cuối cùng bên phải vùng dữ liệu, dò tìm từ dưới lên trên.

- Loại dò tìm : Không bắt buộc, mặc định là 1. Phía dò tìm có 4 giá trị :
+ 1 : Dò tìm chính xác với giá trị tìm kiếm (chưa phân biệt giữa chữ thường với chữ in hoa).
+ 2 : Dò tìm không chính xác. Giá trị tìm kiếm là một phần ký tự tính từ bên trái của giá trị dùng để so sánh.
(chưa phân biệt giữa chữ thường với chữ in hoa). VD giá trị dò tìm là "Da" thì kết quả "Danh" được chọn.
+ 3 : Dò tìm không chính xác. Giá trị tìm kiếm là một phần ký tự tính từ bên phải của giá trị dùng để so sánh.
(chưa phân biệt giữa chữ thường với chữ in hoa). VD giá trị dò tìm là "Anh" thì kết quả "Danh" được chọn.
+ 4 : Dò tìm không chính xác. Giá trị tìm kiếm có thể là một phần hay toàn bộ ký tự của giá trị dùng để so sánh.
(chưa phân biệt giữa chữ thường với chữ in hoa). VD giá trị dò tìm là "Anh" hay "da" thì kết quả "Danh" được chọn.

- Điều kiện dò tìm
: Không bắt buộc, mặc định là False. Điều kiện dò tìm có 2 giá trị :
+ True : Dò tìm có phân biệt giữa chữ thường với chữ in hoa.
+ False : Dò tìm không phân biệt giữa chữ thường với chữ in hoa.
Link tải ví dụ: VlookupD.xls
Link tải code: VlookupD.rar

Bạn muốn sử dụng hàm này liên hệ Email:dinhanhtuan68@gmail.com Tel: 098 909 5293

Code:
Function VlookupD(Lookup_Value As VariantTable_Array As Range_
                  Optional Col_Index 
As Long 1_
                  Optional Side 
As Byte 1_
             
     Optional Search_Order As Byte 1_
                  Optional MatchC As Boolean False) As Variant
Application
.Volatile
Dim Lookup_Col 
As RangeAfterCell As RangeFound As Range
Dim Col_Num 
As ByteStr As StringSearchD As Variant
Col_Num 
Table_Array.Columns.CountIf Trim(Lookup_Value) = "" Or Col_Index Or Col_Index Col_Num _Or Search_Order Or Search_Order Or Side Or Side 4 Then
    VlookupD 
"Error!"
    
Exit FunctionEnd IfSelect Case Side
    
Case 1
        Set Lookup_Col 
Table_Array.Resize(, 1)
        
Col_Index Col_Index 1
        Set AfterCell 
Lookup_Col.Cells(Lookup_Col.Cells.Count)
        
SearchD xlNext
    
Case 2
        Set Lookup_Col 
Table_Array.Resize(, 1)
        
Col_Index Col_Index 1
        Set AfterCell 
Lookup_Col.Resize(11)
        
SearchD xlPrevious
    
Case 3
        Set Lookup_Col 
Table_Array.Resize(, 1).Offset(, Col_Num 1)
        
Col_Index Col_Index
        Set AfterCell 
Lookup_Col.Cells(Lookup_Col.Cells.Count)
        
SearchD xlNext
    
Case 4
        Set Lookup_Col 
Table_Array.Resize(, 1).Offset(, Col_Num 1)
        
Col_Index Col_Index
        Set AfterCell 
Lookup_Col.Resize(11)
        
SearchD xlPrevious
End Select
Select 
Case Search_Order
    
Case 1Str Lookup_Value
    
Case 2Str Lookup_Value "*"
    
Case 3Str "*" Lookup_Value
    
Case 4Str "*" Lookup_Value "*"End Select
Set Found 
Lookup_Col.Find(What:=StrAfter:=AfterCellLookIn:=xlFormulas_
            LookAt
:=xlWholeSearchDirection:=SearchDMatchCase:=MatchC)
If 
Found Is Nothing Then
    VlookupD 
"#N/A"
    
Exit FunctionEnd IfVlookupD Found.Offset(, Col_Index)Set Lookup_Col NothingSet AfterCell NothingSet Found Nothing
End 
Function 

About Tuấn Đinh Anh

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn