hoahuongduong1986
Thành viên thường trực
- Tham gia
- 14/11/18
- Bài viết
- 346
- Được thích
- 40
Dear Anh Chị và các bạn,
Em dùng Code dưới để VLOOKup từ Sheet 6 sang ba Cột của SHeet 4 với giới hạn tối đa là 30 ngàn dòng. Nhưng thực chất số lượng dòng nhỏ hơn 30000 dòng. Viết đoạn Code như thế nào để sau khi lọc xong công đoạn này, Nó rò từ địa chỉ ô A30000 lên trên, gặp dữ liệu đầu tiên tại tọa độ Ax thì nó sẽ xóa toàn bộ từ vung (Ax: GH30000). Với x là tọa độ mà tại đó là giá trị đầu tiên từ A30000 rà soát lên.
Option Explicit
Sub VLookupL()
Dim i As Long, KQ(), Ma(), SoGiaoDich(), Item, Dic As Object
With Sheet6
Ma = Range(.[B2], .[B400].End(3)).Resize(, 4)
End With
With Sheet4
SoGiaoDich = .Range(.[CO2], .[CO30000].End(3))
ReDim KQ(1 To UBound(SoGiaoDich), 1 To 3)
Set Dic = CreateObject("Scripting.dictionary")
For i = 1 To UBound(Ma)
Item = CStr(Ma(i, 1))
If Not Dic.exists(Item) Then
Dic.Add CStr(Ma(i, 1)), i
End If
Next i
For i = 1 To UBound(SoGiaoDich)
Item = CStr(SoGiaoDich(i, 1))
If Dic.exists(Item) Then
KQ(i, 1) = Ma(Dic.Item(Item), 2)
KQ(i, 2) = Ma(Dic.Item(Item), 3)
KQ(i, 3) = Ma(Dic.Item(Item), 4)
Else
KQ(i, 1) = "C" & ChrW(7847) & "n nh" & ChrW(7853) & "p mã"
KQ(i, 2) = "C" & ChrW(7847) & "n nh" & ChrW(7853) & "p mã"
KQ(i, 3) = "C" & ChrW(7847) & "n nh" & ChrW(7853) & "p mã"
End If
Next i
.[DK2:N30000].ClearContents
.[DK2].Resize(i - 1, 3) = KQ
Set Dic = Nothing
End With
End Sub
Em dùng Code dưới để VLOOKup từ Sheet 6 sang ba Cột của SHeet 4 với giới hạn tối đa là 30 ngàn dòng. Nhưng thực chất số lượng dòng nhỏ hơn 30000 dòng. Viết đoạn Code như thế nào để sau khi lọc xong công đoạn này, Nó rò từ địa chỉ ô A30000 lên trên, gặp dữ liệu đầu tiên tại tọa độ Ax thì nó sẽ xóa toàn bộ từ vung (Ax: GH30000). Với x là tọa độ mà tại đó là giá trị đầu tiên từ A30000 rà soát lên.
Option Explicit
Sub VLookupL()
Dim i As Long, KQ(), Ma(), SoGiaoDich(), Item, Dic As Object
With Sheet6
Ma = Range(.[B2], .[B400].End(3)).Resize(, 4)
End With
With Sheet4
SoGiaoDich = .Range(.[CO2], .[CO30000].End(3))
ReDim KQ(1 To UBound(SoGiaoDich), 1 To 3)
Set Dic = CreateObject("Scripting.dictionary")
For i = 1 To UBound(Ma)
Item = CStr(Ma(i, 1))
If Not Dic.exists(Item) Then
Dic.Add CStr(Ma(i, 1)), i
End If
Next i
For i = 1 To UBound(SoGiaoDich)
Item = CStr(SoGiaoDich(i, 1))
If Dic.exists(Item) Then
KQ(i, 1) = Ma(Dic.Item(Item), 2)
KQ(i, 2) = Ma(Dic.Item(Item), 3)
KQ(i, 3) = Ma(Dic.Item(Item), 4)
Else
KQ(i, 1) = "C" & ChrW(7847) & "n nh" & ChrW(7853) & "p mã"
KQ(i, 2) = "C" & ChrW(7847) & "n nh" & ChrW(7853) & "p mã"
KQ(i, 3) = "C" & ChrW(7847) & "n nh" & ChrW(7853) & "p mã"
End If
Next i
.[DK2:N30000].ClearContents
.[DK2].Resize(i - 1, 3) = KQ
Set Dic = Nothing
End With
End Sub