snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Sub CollecDataCPT()
Dim wh As Worksheet, rSource As Range
Dim grandTotal As Double, subTotal As Double
Dim rTarget As Range
For Each wh In Worksheets
If wh.Name <> "CollecData" Then
With wh
Set rSource = .Range("a9", .Range("a" & Rows.Count).End(xlUp)) _
.Resize(, 100)
subTotal = Application.Sum(rSource.Offset(0, 10))
grandTotal = grandTotal + subTotal
End With
With Sheets("CollecData")
Set rTarget = .Range("b" & Rows.Count).End(xlUp)
If rTarget.Row = 5 Then
Set rTarget = rTarget.Offset(1, -1)
Else
Set rTarget = rTarget.Offset(3, -1)
End If
End With
rSource.Copy
rTarget.PasteSpecial xlPasteValues
rTarget.PasteSpecial xlPasteFormats
With Sheets("CollecData").Range("a" & Rows.Count).End(xlUp)
.Offset(1, 0) = wh.Name & " Total"
.Offset(1, 10) = subTotal
End With
End If
Next wh
With Sheets("CollecData").Range("a" & Rows.Count).End(xlUp)
.Offset(1, 0) = "Grand Total"
.Offset(1, 10) = grandTotal
End With
End Sub
Sub CollecDataCPT()
Dim wh As Worksheet, rSource As Range
Dim grandTotal As Double, subTotal As Double
Dim rTarget As Range
For Each wh In Worksheets
If wh.Name <> "CollecData" Then
With wh
Set rSource = .Range("a9", .Range("a" & Rows.Count).End(xlUp)) _
.Resize(, 100)
subTotal = Application.Sum(rSource.Offset(0, 10))
grandTotal = grandTotal + subTotal
End With
With Sheets("CollecData")
Set rTarget = .Range("b" & Rows.Count).End(xlUp)
If rTarget.Row = 5 Then
Set rTarget = rTarget.Offset(1, -1)
Else
Set rTarget = rTarget.Offset(3, -1)
End If
End With
rSource.Copy
rTarget.PasteSpecial xlPasteValues
rTarget.PasteSpecial xlPasteFormats
With Sheets("CollecData").Range("a" & Rows.Count).End(xlUp)
.Offset(1, 0) = wh.Name & " Total"
.Offset(1, 10) = subTotal
End With
End If
Next wh
With Sheets("CollecData").Range("a" & Rows.Count).End(xlUp)
.Offset(1, 0) = "Grand Total"
.Offset(1, 10) = grandTotal
End With
End Sub