Summary Details
Posted: Fri Jan 15, 2016 11:22 pm
สะหวัดดีครับ อาจารย์
ขออนุญาตรบกวนสอบถาม VBA ครับ
ผมมีข้อมูลอยู่ในตาราง sheet "DETAIL" ชิ่งตะต้องใส่ข้อมูน
และ มี sheet "SUM" จะเป้น summary ข้อมูล ที่เราใส่ทุกอย่าง sheet "DETAIL"
ดูเหมือนว่า ตอนนีมันทำงานช้ามากครับ อาจารย์ ผมอยากให้ code ทำงานให้เร็วขิ้น
รบกวนอาจารย์ข่วยดูให้ด้วยครับ
ดั่งตัวอย่างไฟล์ที่แนบมา
ขออนุญาตรบกวนสอบถาม 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
ดั่งตัวอย่างไฟล์ที่แนบมา