[GPECODE=vb]Dim arrDG(), arrTK(), C_TU As String ' C_TU la dieu kien loc
Dim endR As Long, i As Long, k As Long, s As Long, n As Long
Dim rngNo As Range, rngCo As Range, rngDG As Range
Sub Loc_PhieuNhap()
Application.ScreenUpdating = False
Dim WsN As Worksheet
Dim WsD As Worksheet
Set WsN = Sheets("PN")
Set WsD = Sheets("DL")
With WsN
.AutoFilterMode = False
endR = .Range("m100").End(xlUp).Row
C_TU = WsN.Range("m5")
Set rngDG = .Range("a9:n" & endR)
Set rngNo = .Range("m9:m" & endR)
Set rngCo = .Range("n9:n" & endR)
End With
Dim rngData As Range
s = 0
Dim arrKQ(1 To 100, 1 To 14) ' ==== "TO" bao nhieu cot tren phieu can copy sang
Set rngData = Union(rngNo, rngCo)
arrTK = rngData.Value
arrDG = rngDG.Value
For i = 1 To UBound(arrTK)
If arrTK(i, 1) = C_TU Then
s = s + 1
arrKQ(s, 1) = arrDG(i, 1)
arrKQ(s, 2) = arrDG(i, 2)
arrKQ(s, 3) = arrDG(i, 3)
arrKQ(s, 4) = arrDG(i, 4)
arrKQ(s, 5) = arrDG(i, 5)
arrKQ(s, 6) = arrDG(i, 6)
arrKQ(s, 7) = arrDG(i, 7)
arrKQ(s, 8) = arrDG(i, 8)
arrKQ(s, 9) = arrDG(i, 9)
arrKQ(s, 10) = arrDG(i, 10)
arrKQ(s, 11) = arrDG(i, 11)
arrKQ(s, 12) = arrDG(i, 12)
arrKQ(s, 13) = arrDG(i, 13)
arrKQ(s, 14) = arrDG(i, 14)
End If
Next
If s = 0 Then Exit Sub
With WsD
With .Range("Bd")
.Resize(s, 14) = arrKQ
End With
End With
Set rngData = Nothing
Erase arrTK, arrKQ, arrDG
Application.ScreenUpdating = True
End Sub]
Trong file đính kèm mình có Sheet "PN" và Sheet "DL" nhờ các Pro xem giúp mình với. Mình tìm hoài nhưng chưa có cách nào làm được. Thân!
[/GPECODE]Trong file đính kèm mình có Sheet "PN" và Sheet "DL" nhờ các Pro xem giúp mình với. Mình tìm hoài nhưng chưa có cách nào làm được. Thân!
Dim endR As Long, i As Long, k As Long, s As Long, n As Long
Dim rngNo As Range, rngCo As Range, rngDG As Range
Sub Loc_PhieuNhap()
Application.ScreenUpdating = False
Dim WsN As Worksheet
Dim WsD As Worksheet
Set WsN = Sheets("PN")
Set WsD = Sheets("DL")
With WsN
.AutoFilterMode = False
endR = .Range("m100").End(xlUp).Row
C_TU = WsN.Range("m5")
Set rngDG = .Range("a9:n" & endR)
Set rngNo = .Range("m9:m" & endR)
Set rngCo = .Range("n9:n" & endR)
End With
Dim rngData As Range
s = 0
Dim arrKQ(1 To 100, 1 To 14) ' ==== "TO" bao nhieu cot tren phieu can copy sang
Set rngData = Union(rngNo, rngCo)
arrTK = rngData.Value
arrDG = rngDG.Value
For i = 1 To UBound(arrTK)
If arrTK(i, 1) = C_TU Then
s = s + 1
arrKQ(s, 1) = arrDG(i, 1)
arrKQ(s, 2) = arrDG(i, 2)
arrKQ(s, 3) = arrDG(i, 3)
arrKQ(s, 4) = arrDG(i, 4)
arrKQ(s, 5) = arrDG(i, 5)
arrKQ(s, 6) = arrDG(i, 6)
arrKQ(s, 7) = arrDG(i, 7)
arrKQ(s, 8) = arrDG(i, 8)
arrKQ(s, 9) = arrDG(i, 9)
arrKQ(s, 10) = arrDG(i, 10)
arrKQ(s, 11) = arrDG(i, 11)
arrKQ(s, 12) = arrDG(i, 12)
arrKQ(s, 13) = arrDG(i, 13)
arrKQ(s, 14) = arrDG(i, 14)
End If
Next
If s = 0 Then Exit Sub
With WsD
With .Range("Bd")
.Resize(s, 14) = arrKQ
End With
End With
Set rngData = Nothing
Erase arrTK, arrKQ, arrDG
Application.ScreenUpdating = True
End Sub]
Trong file đính kèm mình có Sheet "PN" và Sheet "DL" nhờ các Pro xem giúp mình với. Mình tìm hoài nhưng chưa có cách nào làm được. Thân!


File đính kèm
Lần chỉnh sửa cuối: