E có một file dữ liệu (các code copy của thầy NDU) - có 2 sheet là Data và P22
Code trong Module
(chưa hiểu bản chất vấn đề)
Lookup_value e để ở Range("F2:F10000") của sheet Data
Giờ muốn tìm kiếm 6 cột bên sheet P22 để đưa vào sheet Data (thay cho hàm vlookup nặng nề) thì code cần thêm/sửa những j
P/S: quả thật file này bảo mật nên ko thể úp lên đây, mong các thầy/anh/chị thông cảm giúp đỡ
Code trong Module
Code trong sheet DataOption ExplicitPublic Chk As Boolean, Dic As Object, aResult()
Sub Autpen()
Dim wks As Worksheet, SrcRng As Range, sArray
Dim lR As Long, i As Long, n As Long, tmp
On Error Resume Next
Set wks = Sheets("P22")
Set SrcRng = wks.Range("A1:K10000")
sArray = SrcRng.Value
ReDim aResult(1 To UBound(sArray, 1), 1 To UBound(sArray, 2))
Set Dic = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(sArray, 1)
If CStr(sArray(i, 1)) <> "" Then
tmp = sArray(i, 1)
If Not Dic.Exists(tmp) Then
lR = lR + 1
Dic.Add tmp, lR
aResult(lR, 1) = tmp
aResult(lR, 2) = sArray(i, 2)
aResult(lR, 3) = sArray(i, 3)
aResult(lR, 5) = sArray(i, 5)
aResult(lR, 6) = sArray(i, 6)
aResult(lR, 14) = sArray(i, 14)
aResult(lR, 13) = sArray(i, 13)
End If
End If
Next
End Sub
E có loay hoay để sửa nhưng mà quay quay cái đầu, chả ra đâu vào đâuPrivate Sub Worksheet_Change(ByVal Target As Range) Dim rTarget As Range, aTarget, i As Long, n As Long
Dim Arr1(), Arr2(), Arr3(), tmp
On Error Resume Next
If Dic Is Nothing Then Autpen
If Not Intersect(Range("F2:F10000"), Target) Is Nothing Then
Set rTarget = Intersect(Range("F2:F10000"), Target)
If IsArray(rTarget.Value) Then
aTarget = rTarget.Value
Else
ReDim aTarget(1 To 1, 1 To 1)
aTarget(1, 1) = rTarget.Value
End If
ReDim Arr1(1 To UBound(aTarget, 1), 1 To 2)
ReDim Arr2(1 To UBound(aTarget, 1), 1 To 3)
ReDim Arr3(1 To UBound(aTarget, 1), 1 To 1)
For i = 1 To UBound(aTarget, 1)
If aTarget(i, 1) <> "" Then
tmp = aTarget(i, 1)
If Dic.Exists(tmp) Then
Arr1(i, 1) = aResult(Dic.Item(tmp), 2)
Arr1(i, 2) = aResult(Dic.Item(tmp), 3)
Arr2(i, 1) = aResult(Dic.Item(tmp), 5)
Arr2(i, 2) = aResult(Dic.Item(tmp), 6)
Arr2(i, 3) = aResult(Dic.Item(tmp), 14)
Arr3(i, 1) = aResult(Dic.Item(tmp), 13)
End If
End If
Next
rTarget.Offset(, 1).Resize(, 2).Value = Arr1
rTarget.Offset(, 4).Resize(, 3).Value = Arr2
rTarget.Offset(, 11).Resize(, 1).Value = Arr3
End If
End Sub

Lookup_value e để ở Range("F2:F10000") của sheet Data
Giờ muốn tìm kiếm 6 cột bên sheet P22 để đưa vào sheet Data (thay cho hàm vlookup nặng nề) thì code cần thêm/sửa những j
P/S: quả thật file này bảo mật nên ko thể úp lên đây, mong các thầy/anh/chị thông cảm giúp đỡ