Chào mọi người, mình có đoạn code sau: mong mọi người cải thiện giúp
thanks
Mã:
Sub SORT_NEW_DESIGN()
Dim I As Long
Dim J As Long
Dim Arr_N()
Dim Arr_D()
Dim K As Long
Dim End_Row As Long
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
Dim arr
Dim Filename As Variant
Dim wbSource
Dim wbTarget
Dim shSource As Worksheet
Dim shTarget As Worksheet
Set wbTarget = ThisWorkbook.Worksheets("MAT")
Filename = Application.GetOpenFilename("All Excel File,,*.xlsx,*.xls")
' Filename = Application.GetOpenFilename(
If Filename <> "False" Then
'
wbTarget.Range("L2") = Filename
Else 'Cancel
' MsgBox "Cancel"
End
End If
Set wbSource = Workbooks.Open(Filename)
Set shSource = wbSource.Worksheets("؈³H’ö‘(ƒ}ƒ‹ƒ`j")
End_Row = shSource.Range("F1000").End(xlUp).Row
Arr_N = shSource.Range("F8:J" & End_Row)
ReDim Arr_D(1 To UBound(Arr_N, 1), 1 To 4)
K = 0
For I = 1 To UBound(Arr_N, 1)
If Not Dic.exists(Arr_N(I, 1) & "-" & Arr_N(I, 2) & "-" & Arr_N(I, 3)) Then
K = K + 1
Dic.Add Arr_N(I, 1) & "-" & Arr_N(I, 2) & "-" & Arr_N(I, 3), K
If Arr_N(I, 1) <> Empty Then
Arr_D(K, 1) = Arr_N(I, 1) & " " & Arr_N(I, 2) & " " & Arr_N(I, 3)
' Arr_D(K, 2) = Arr_N(I, 2)
' Arr_D(K, 3) = Arr_N(I, 3)
Arr_D(K, 4) = Arr_N(I, 5)
End If
Else
J = Dic.Item(Arr_N(I, 1) & "-" & Arr_N(I, 2) & "-" & Arr_N(I, 3))
Arr_D(J, 4) = Arr_D(J, 4) + Arr_N(I, 5)
End If
Next
wbTarget.Range("L7:o1000").Clear
wbTarget.Range("L7").Resize(K, 4) = Arr_D
wbTarget.Range("L7").Resize(K, 4).sort key1:=wbTarget.Range("L7"), key1:=wbTarget.Range("L7"), ORDER1:=xlAscending, ORDER2:=xlDescending
'wbTarget.Range("L7:o1000").Select
'arr = wbTarget.Range("L7:o1000").Select
Application.ScreenUpdating = True
wbSource.Close False
End Sub