Nhờ cải thiện giúp code để chương trình hoạt động tối ưu (1 người xem)

  • Thread starter Thread starter gaupu89
  • Ngày gửi Ngày gửi
Liên hệ QC

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

gaupu89

Thành viên mới
Tham gia
3/10/16
Bài viết
24
Được thích
0
Chào mọi người, mình có đoạn code sau: mong mọi người cải thiện giúp
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
thanks
 
"tối ưu" là từ có tính chất tương đối. Một chương trình có thể toàn hảo về mặt này nhưng yếu về mặt khác.
Bạn cho biết cụ thể muốn cải tiến mặt nào và sẵn sàng hy sinh mặt nào để đạt mục đích.
Khẳng định điều dó rồi hãy nói chuyện tiếp.
 
Upvote 0
1. Xóa bớt dòng trắng không cần thiết
2. Thêm Calculation
3. Viết thường chỉ số cho dễ đọc
4. Dòng nào k chạy thì xóa luôn
5. Theo #2
 
Upvote 0
Web KT

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

Back
Top Bottom