- Tham gia
- 21/12/07
- Bài viết
- 1,902
- Được thích
- 5,303
- Nghề nghiệp
- Kinh doanh các mặt hàng văn phòng phẩm
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à Macth và Index. 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 :
Để 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à Macth và Index. 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.
PHP:
Function VlookupD(Lookup_Value As Variant, Table_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 Range, AfterCell As Range, Found As Range
Dim Col_Num As Byte, Str As String, SearchD As Variant
Col_Num = Table_Array.Columns.Count
If Trim(Lookup_Value) = "" Or Col_Index < 0 Or Col_Index > Col_Num _
Or Search_Order < 0 Or Search_Order > 4 Or Side < 0 Or Side > 4 Then
VlookupD = "Error!"
Exit Function
End If
Select 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(1, 1)
SearchD = xlPrevious
Case 3
Set Lookup_Col = Table_Array.Resize(, 1).Offset(, Col_Num - 1)
Col_Index = 1 - 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 = 1 - Col_Index
Set AfterCell = Lookup_Col.Resize(1, 1)
SearchD = xlPrevious
End Select
Select Case Search_Order
Case 1: Str = Lookup_Value
Case 2: Str = Lookup_Value & "*"
Case 3: Str = "*" & Lookup_Value
Case 4: Str = "*" & Lookup_Value & "*"
End Select
Set Found = Lookup_Col.Find(What:=Str, After:=AfterCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchDirection:=SearchD, MatchCase:=MatchC)
If Found Is Nothing Then
VlookupD = "#N/A"
Exit Function
End If
VlookupD = Found.Offset(, Col_Index)
Set Lookup_Col = Nothing: Set AfterCell = Nothing: Set Found = Nothing
End Function
File đính kèm
Lần chỉnh sửa cuối: