???Lý do!Mình đang một user-defined function trong Excel có tính năng tương tự như VLookup nhưng chỉ khác ở chỗ là hàm này sẽ dò tìm ngược từ dưới lên của Table_array.Rất mong các bchỉ giáo.
Su dung ham UDF sau:
Function MyVlookup(gtt As Variant, bdl As Range, vt As Integer) As Variant
d = bdl.Row 'Dong dau tien cua bang
j = bdl.Column 'Cot dau tien cua bang
c = d + bdl.Rows.Count 'Dong cuoi cua bang
For i = c To d Step -1
If Cells(i, j) = gtt Then Exit For 'Neu tim duoc thi thoat lap
Next
MyVlookup = Cells(i, j + vt)
End Function
(ú pháp hàm như sau:Option Explicit
Function GVLooKup(LookUpVar, Rng As Range, Col As Byte, Optional Nguoc As Boolean)
On Error GoTo ErrGVLK
Dim vValues()
Dim lLong As Long
vValues = Rng
If Nguoc Then
For lLong = UBound(vValues) To 1 Step -1
2 If LookUpVar = vValues(lLong, 1) Then
3 GVLooKup = vValues(lLong, Col)
4 Exit For
5 End If
Next
Else
7 For lLong = 1 To UBound(vValues)
8 If LookUpVar = vValues(lLong, 1) Then
9 GVLooKup = vValues(lLong, Col)
Exit For
End If
Next
End If
LoiGVLK: Exit Function
ErrGVLK: GVLooKup = "Xem Lai!"
End Function
họ trả lời như sau:Option Explicit
Function G_VLooKup(LookUpVar, Rng As Range, Col As Byte, Optional Nguoc As Boolean)
On Error GoTo ErrGVLK
Dim vValue(): Dim Dau, Cuoi, lLong As Long
vValue = Rng
If Nguoc Then
Dau = UBound(vValue): Cuoi = 1
Else
Dau = 1: Cuoi = UBound(vValue)
End If
For lLong = Dau To Cuoi
If LookUpVar = vValue(lLong, 1) Then
G_VLooKup = vValue(lLong, Col)
Exit For
End If
Next
Exit Function
ErrGVLK: G_VLooKup = "Error!"
End Function
Function TimMa(Ma As String, MangMa As Range, MangGT As Range, Optional m As Byte)
On Error GoTo Thoat
Dim i As Long, iBD As Long, iKT As Long, iST As Integer
If MangMa.Rows.Count <> MangGT.Rows.Count Then Exit Function
If MangMa.Rows.Count < 1 Or MangGT.Rows.Count < 1 Then Exit Function
If m <> 0 And m <> 1 Then Exit Function
If m = 0 Then
iBD = 1: iKT = MangMa.Rows.Count: iST = 1
ElseIf m = 1 Then
iBD = MangMa.Rows.Count: iKT = 1: iST = -1
End If
For i = iBD To iKT Step iST
If MangMa(i, 1) = Ma Then
TimMa = MangGT(i, 1)
Exit For
End If
Next i
Thoat:
End Function
Cái đó bạn dùng Macro kết hợp với Advanced filter là đc nhé:Mình gặp một khó khăn mà làm mãi vẫn không ra. Việc gấp quá nên phải nhờ tới webketoan. Mình muốn lookup 1 giá trị nhưng cho ra 2 kết quả, xem file đính kèm. Mong được giúp sức.