Hỗ trợ chỉnh lại code VBA (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

dinhquang042000

Thành viên chính thức
Tham gia
16/12/15
Bài viết
76
Được thích
4
Kính gửi các anh/chị FORUMS,
Báo cáo của em, em Lọc dữ liệu từ Sheet TH3 có cột A (số Conts) trùng nhau thỏa mãn các điều kiện phía sau: VD: điều kiện cột D, Cột H, Cột J thoải mãn điều kiện) và coppy sang các sheet tương ứng, qua tìm hiểu trên diễn đàn và nhờ anh chị giúp đỡ, Em đang dùng code VBA dưới (file đính kèm)
Nhưng do giá trị conts có thể cùng phương án nhưng làm nhiều lần trong tháng, khi chạy code này, nó chỉ lấy theo phương án trên cùng.
Em muốn chỉnh sửa lại code để có thêm điều kiện khi lọc là Cột E (Ngày) có giá trị phải trùng nhau.
Mong các anh chị bớt chút thời gian chỉ giáo thêm giúp e.
Em xin chân thành cảm ơn.


Mã:
Sub GPEPARURU()
Dim Darr, arrDO(), arrNH(), arrNT(), arrNS(), arrHS(), arrND(), arrDI(), arrDO_NH(), arrDO_NT(), arrDO_NS(), arrDO_HS(), arrDO_ND(), arrDO_DI(), Dic As Object
Dim i As Long, K As Long, nNH As Long, nNT As Long, nHS As Long, nNS As Long, nND As Long, nDI As Long, J As Integer
Set Dic = CreateObject("Scripting.Dictionary")
Darr = Sheets("TH3").Range("A1:J" & Sheets("TH3").Range("A2").End(xlDown).Row)
ReDim arrDO(1 To UBound(Darr), 1 To 10): ReDim arrNH(1 To UBound(Darr), 1 To 10)
ReDim arrNT(1 To UBound(Darr), 1 To 10): ReDim arrNS(1 To UBound(Darr), 1 To 10)
ReDim arrHS(1 To UBound(Darr), 1 To 10): ReDim arrND(1 To UBound(Darr), 1 To 10)
ReDim arrDI(1 To UBound(Darr), 1 To 10)
ReDim arrDO_NH(1 To UBound(Darr), 1 To 10)
ReDim arrDO_NT(1 To UBound(Darr), 1 To 10)
ReDim arrDO_NS(1 To UBound(Darr), 1 To 10)
ReDim arrDO_HS(1 To UBound(Darr), 1 To 10)
ReDim arrDO_ND(1 To UBound(Darr), 1 To 10)
ReDim arrDO_DI(1 To UBound(Darr), 1 To 10)

For J = 1 To 10
    arrDO(1, J) = Darr(1, Choose(J, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
    arrNH(1, J) = arrDO(1, J): arrDO_NH(1, J) = arrDO(1, J)
    arrNT(1, J) = arrDO(1, J): arrDO_NT(1, J) = arrDO(1, J)
    arrNS(1, J) = arrDO(1, J): arrDO_NS(1, J) = arrDO(1, J)
    arrHS(1, J) = arrDO(1, J): arrDO_HS(1, J) = arrDO(1, J)
    arrND(1, J) = arrDO(1, J): arrDO_ND(1, J) = arrDO(1, J)
    arrDI(1, J) = arrDO(1, J): arrDO_DI(1, J) = arrDO(1, J)
    
Next J
K = 1: nNH = 1: nNT = 1: nNS = 1: nHS = 1
For i = 2 To UBound(Darr)
    If Darr(i, 8) = "RURU" And Darr(i, 4) = "F" And Darr(i, 10) = Sheets("BAO CAO").Range("D4").Value Then
        K = K + 1
        For J = 1 To 10
            arrDO(K, J) = Darr(i, Choose(J, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
        Next J
        If Not Dic.Exists(arrDO(K, 1)) Then Dic.Add arrDO(K, 1), ""
    End If
    If Darr(i, 8) = "HBCX" And Darr(i, 4) = "F" Then
        nNH = nNH + 1
        For J = 1 To 10
            arrNH(nNH, J) = Darr(i, Choose(J, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
        Next J
    End If
     If Darr(i, 8) = "HANG" And Darr(i, 4) = "F" Then
        nNT = nNT + 1
        For J = 1 To 10
            arrNH(nNT, J) = Darr(i, Choose(J, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
        Next J
    End If
    If Darr(i, 8) = "HSLA" And Darr(i, 4) = "F" Then
        nHS = nHS + 1
        For J = 1 To 10
            arrNH(nHS, J) = Darr(i, Choose(J, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
        Next J
    End If
    If Darr(i, 8) = "NSLC" And Darr(i, 4) = "F" Then
        nNS = nNS + 1
        For J = 1 To 10
            arrNS(nNS, J) = Darr(i, Choose(J, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
        Next J
    End If
    If Darr(i, 8) = "HBND" And Darr(i, 4) = "F" Then
        nNS = nNS + 1
        For J = 1 To 10
            arrNS(nNS, J) = Darr(i, Choose(J, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
        Next J
    End If
    If Darr(i, 8) = "DI" And Darr(i, 4) = "F" Then
        nDI = nDI + 1
        For J = 1 To 10
            arrDI(nDI, J) = Darr(i, Choose(J, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
        Next J
    End If

Next i
K = 1
For i = 2 To nNH
    If Dic.Exists(arrNH(i, 1)) Then
        K = K + 1
        For J = 1 To 10
            arrDO_NH(K, J) = arrNH(i, J)
        Next J
    End If
Next i
With Sheets("HBCX - RURU")
    .Range("A1:J" & .Range("A500000").End(xlUp).Row).ClearContents
    .Range("A1").Resize(K + 1, 10) = arrDO_NH
End With
K = 1
For i = 2 To nNT
    If Dic.Exists(arrNT(i, 1)) Then
        K = K + 1
        For J = 1 To 10
            arrDO_NT(K, J) = arrNT(i, J)
        Next J
    End If
Next i
With Sheets("HANG - RURU")
    .Range("A1:J" & .Range("A500000").End(xlUp).Row).ClearContents
    .Range("A1").Resize(K + 1, 10) = arrDO_NT
End With
K = 1
For i = 2 To nNS
    If Dic.Exists(arrNS(i, 1)) Then
        K = K + 1
        For J = 1 To 10
            arrDO_NS(K, J) = arrNS(i, J)
        Next J
    End If
Next i
With Sheets("NSLC - RURU")
    .Range("A1:J" & .Range("A500000").End(xlUp).Row).ClearContents
    .Range("A1").Resize(K + 1, 10) = arrDO_NS
End With
K = 1
For i = 2 To nHS
    If Dic.Exists(arrHS(i, 1)) Then
        K = K + 1
        For J = 1 To 10
            arrDO_HS(K, J) = arrHS(i, J)
        Next J
    End If
Next i
With Sheets("HSLA - RURU")
    .Range("A1:J" & .Range("A500000").End(xlUp).Row).ClearContents
    .Range("A1").Resize(K + 1, 10) = arrDO_HS
End With
K = 1
For i = 2 To nND
    If Dic.Exists(arrND(i, 1)) Then
        K = K + 1
        For J = 1 To 10
            arrDO_ND(K, J) = arrND(i, J)
        Next J
    End If
Next i
With Sheets("HBND - RURU")
    .Range("A1:J" & .Range("A500000").End(xlUp).Row).ClearContents
    .Range("A1").Resize(K + 1, 10) = arrDO_ND
End With
K = 1
For i = 2 To nDI
    If Dic.Exists(arrDI(i, 1)) Then
        K = K + 1
        For J = 1 To 10
            arrDO_DI(K, J) = arrDI(i, J)
        Next J
    End If
Next i
With Sheets("NTAU - RURU")
    .Range("A1:J" & .Range("A500000").End(xlUp).Row).ClearContents
    .Range("A1").Resize(K + 1, 10) = arrDO_DI
End With
Set Dic = Nothing
End Sub
 

File đính kèm

Thay toàn bộ
PHP:
Choose(J, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
bằng
Mã:
J
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom