สะหวัดดีครับ อาจารย์
ขออนุญาตรบกวนสอบถาม VBA ครับ
ผมมีข้อมูลอยู่ในตาราง sheet "DETAIL" ชิ่งตะต้องใส่ข้อมูน
และ มี sheet "SUM" จะเป้น summary ข้อมูล ที่เราใส่ทุกอย่าง sheet "DETAIL"
ดูเหมือนว่า ตอนนีมันทำงานช้ามากครับ อาจารย์ ผมอยากให้ code ทำงานให้เร็วขิ้น
รบกวนอาจารย์ข่วยดูให้ด้วยครับ
Code: Select all
Sub summary()
Sheets("data").Visible = True
Worksheets.Add(After:=Worksheets(1)).Name = "data2"
Worksheets.Add(After:=Worksheets(1)).Name = "sheet4"
'************************************************
Sheets("Sheet4").Select
Range("A1") = "DESCRIPTION"
Range("B1") = "ACCT"
Range("C1") = "D-AMOUNT"
Range("D1") = "C-AMOUNT"
Range("E1") = "COX1"
Range("F1") = "COX2"
Range("G1") = "COX3"
Range("H1") = "COX4"
Range("I1") = "COX5"
Range("J1") = "COX6"
Range("K1") = "COX7"
Range("L1") = "COX8"
Range("M1") = "COX9"
Range("N1") = "COX10"
Sheets("data2").Select
Range("A8") = "DESCRIPTION"
Range("B8") = "ACCT"
Range("C8") = "D-AMOUNT"
Range("D8") = "C-AMOUNT"
Range("E8") = "COX1"
Range("F8") = "COX2"
Range("G8") = "COX3"
Range("H8") = "COX4"
Range("I8") = "COX5"
Range("J8") = "COX6"
Range("K8") = "COX7"
Range("L8") = "COX8"
Range("M8") = "COX9"
Range("N8") = "COX10"
'***************************
Sheets("Sheet4").Select
Range("A2:V498").Select
Selection.ClearContents
Range("A2").Select
Sheets("DETAIL").Select
Range("Q10:AD130").Select
Selection.Copy
Sheets("Sheet4").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A2").Select
Range("C2:C1000").Select
Selection.ClearContents
Range("A2").Select
'*********************************************
Range("A1:n100").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
'******************************
Range("A1:N185").Select
ActiveWorkbook.Worksheets("Sheet4").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet4").Sort.SortFields.Add Key:=Range("N2:N121") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet4").Sort.SortFields.Add Key:=Range("B2:B121") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet4").Sort.SortFields.Add Key:=Range("e2:e121") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet4").Sort
.SetRange Range("A1:N121")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A2").Select
'**************************************
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'**************************************************
Dim sa1 As String
Dim sa2 As String
Dim sa3 As String
Dim sa4 As String
Dim sa5 As String
Application.ScreenUpdating = False
For i = 2 To 122
sa1 = Application.Worksheets("sheet4").Cells(i, 1)
sa2 = Application.Worksheets("sheet4").Cells(i, 2)
sa3 = Application.Worksheets("sheet4").Cells(i, 5)
Application.Worksheets("detail").Activate
ActiveSheet.Range("$Q$9:$AD$129").AutoFilter Field:=1, Criteria1:=sa1
ActiveSheet.Range("$Q$9:$AD$129").AutoFilter Field:=2, Criteria1:=sa2
ActiveSheet.Range("$Q$9:$AD$129").AutoFilter Field:=5, Criteria1:=sa3
ActiveSheet.Range("$Q$9:$AD$129").AutoFilter Field:=13
Range("Q10:AD130").Select
Range("AD130").Activate
Selection.Copy
Application.Worksheets("data").Activate
Range("a2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("a1").Select
Application.Worksheets("detail").Activate
'**************************************
Cells.Select
Range("J1").Activate
ActiveSheet.ShowAllData
Range("J1").Select
'******************************************
Range("Q2").Select
'*******************************
Dim lastRow As Long
Sheets("data").Select
Range("A1:N1").Select
Selection.Copy
Sheets("data2").Select
lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
ActiveSheet.Cells(lastRow + 1, "A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A5").Select
Sheets("data").Select
'***********************************
Application.Worksheets("data").Activate
Range("A2:S317").Select
Selection.ClearContents
Range("A2").Select
'********************************************
Next i
Application.ScreenUpdating = True
'*******************************
Sheets("data2").Select
Range("A9:N129").Select
Range("N9").Activate
Selection.Copy
Sheets("SUM").Select
Range("A9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A9").Select
'********************************
Application.DisplayAlerts = False
Sheets("data2").Delete
Sheets("Sheet4").Delete
Application.DisplayAlerts = True
Sheets("data").Visible = False
End Sub
ดั่งตัวอย่างไฟล์ที่แนบมา
You do not have the required permissions to view the files attached to this post.