snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
sub test()
On Error Resume Next
Dim i As Integer
Application.ScreenUpdating = False
Sheets("data").Select
Range("a1").Select
Do While Not IsEmpty(ActiveCell.Value)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
Range("A1").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="data!R1C1:R" + CStr(i) + "C71").CreatePivotTable TableDestination:="", TableName:="PivotTable1"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PivotTable1").SmallGrid = False
ActiveSheet.PivotTables("PivotTable1").AddFields RowFields:=Array("mt_r", _
"gl_group"), ColumnFields:=Array("sector", "sectoren"), PageFields:= _
"mapping_no"
With ActiveSheet.PivotTables("PivotTable1").PivotFields("mt_t")
.Orientation = xlDataField
.NumberFormat = "#,##0.00"
End With
ActiveSheet.PivotTables("PivotTable1").PivotFields("mapping_no").CurrentPage = _
"BAU Expense"
Cells.Select
Cells.EntireColumn.AutoFit
Range("B2").Select
end sub
Last edited by snasui on Sat May 19, 2012 8:51 am, edited 1 time in total.
Reason:ปรับ Code VBA ให้แสดงเป็น Code
On Error Resume Next
Dim i As Integer
Dim j As Integer
Application.ScreenUpdating = False
Sheets("data").Select
Range("a1").Select
Do While Not IsEmpty(ActiveCell.Value)
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
For j = 1 To i
Range("A1").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="data!R1C1:R" + CStr(i) + "C71") _
.CreatePivotTable TableDestination:="", TableName:="PivotTable" & j
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PivotTable" & j).SmallGrid = False
ActiveSheet.PivotTables("PivotTable" & j).AddFields RowFields:=Array("mt_r", _
"gl_group"), ColumnFields:=Array("sector", "sectoren"), PageFields:= _
"mapping_no"
With ActiveSheet.PivotTables("PivotTable" & j).PivotFields("mt_t")
.Orientation = xlDataField
.NumberFormat = "#,##0.00"
End With
ActiveSheet.PivotTables("PivotTable" & j).PivotFields("mapping_no").CurrentPage = _
"BAU Expense"
Cells.Select
Cells.EntireColumn.AutoFit
Next j
Range("B2").Select
Last edited by snasui on Sun May 20, 2012 8:43 am, edited 1 time in total.
Reason:Update ตัวแปร i เป็น j
Sub ake()
Dim i, ii As Integer
Dim a, b, c, d, e As String
Application.ScreenUpdating = False
Sheets("data").Select
Range("is1").Select
ActiveCell.Value = Range("is1").Value
Do While Not IsEmpty(ActiveCell.Value)
i = i + 1
a = ActiveCell.Value
b = Mid(a, 1, Len(a) - 1) & "r"
c = CStr(i)
d = "PivotTable" + c
Sheets("DATA").Select
Range("a1").Select
'ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="data!R1C1:R" + CStr(i) + "C71").CreatePivotTable TableDestination:="", TableName:=d
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="data!R1C1:R" + CStr(i) + "C71") _
.CreatePivotTable TableDestination:="", TableName:="PivotTable1"