Page 1 of 1

สามารถ inset Pivot Table ครั้งเดียวหลายชีทพร้อมกันได้หรือไม่

Posted: Tue Oct 18, 2016 11:32 am
by p_d
เรียน อาจารย์และท่านผู้รู้
ดิฉันอยากทราบว่าพอจะมีวิธี insert Pivot Table ครั้งเดียวหลายชีทพร้อม ๆ กันได้หรือไม่ (1 ชีท/Pivot) เพราะต้องทำรายงานของทุกเดือนซึ่งมีคอลัมภ์จำนวนเท่ากันเหมือนกัน แต่จำนวนแถวแต่ละเดือนไม่เท่ากันค่ะ
ดิฉันแนบไฟล์ตัวอย่างมาด้วยค่ะ

ขอบคุณค่ะ
p_d

Re: สามารถ inset Pivot Table ครั้งเดียวหลายชีทพร้อมกันได้หรือไม่

Posted: Tue Oct 18, 2016 5:25 pm
by snasui
:D การทำเช่นนั้นต้องอาศัย VBA ลองเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ

Re: สามารถ inset Pivot Table ครั้งเดียวหลายชีทพร้อมกันได้หรือไม่

Posted: Wed Oct 19, 2016 8:35 am
by p_d
เรียน อาจารย์
ด้านล่างเป็น code ที่ได้จากการ record macro ในชีทแรก ซึ่งสิ่งที่ต้องแก้คือ จำนวนแถวและชื่อแต่ละชีท (อาจรวมถึงชื่อ PivotTable ด้วยใช่ไหมคะ) แต่ไม่รู้ว่าจะใช้คำสั่งใด รบกวนอาจารย์แนะนำด้วยค่ะ

Code: Select all

Sub Pivot1()
' Pivot1 Macro

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "201609!R1C1:R8C4", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="201609!R1C8", TableName:="PivotTable1", DefaultVersion _
        :=xlPivotTableVersion14
    Sheets("201609").Select
    Cells(1, 8).Select
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Material")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Quantity"), "Sum of Quantity", xlSum
End Sub
ขอบคุณค่ะ
p_d

Re: สามารถ inset Pivot Table ครั้งเดียวหลายชีทพร้อมกันได้หรือไม่

Posted: Wed Oct 19, 2016 6:13 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Pivot1()
    Dim pvCount As Integer
    Dim pvName As String
    Dim sh As Worksheet
    For Each sh In Worksheets
        pvCount = sh.PivotTables.Count
        pvName = "Pvt_" & pvCount + 1
        sh.Range("h1").CurrentRegion.Clear
        sh.Parent.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            sh.Range("a1").CurrentRegion, Version:=xlPivotTableVersion14).CreatePivotTable _
            TableDestination:=sh.Range("h1"), TableName:=pvName, DefaultVersion _
            :=xlPivotTableVersion14
        With sh.PivotTables(pvName).PivotFields("Material")
            .Orientation = xlRowField
            .Position = 1
        End With
        sh.PivotTables(pvName).AddDataField sh.PivotTables( _
            pvName).PivotFields("Quantity"), "Sum of Quantity", xlSum
    Next sh
End Sub

Re: สามารถ inset Pivot Table ครั้งเดียวหลายชีทพร้อมกันได้หรือไม่

Posted: Thu Oct 20, 2016 11:24 am
by p_d
ได้แล้วค่ะ ขอบคุณมาก ๆ เลยนะคะอาจารย์
p_d