Page 1 of 1

รบกวนสอบถามวิธีสร้างpivot table ด้วย VBA แบบอัตโนมัติ

Posted: Mon Sep 09, 2019 9:10 am
by manusin
สวัสดีครับทุกๆท่าน พอดีผมอยากสร้าง pivot table ด้วย VBA แบบอัตโนมัติ โดยให้สร้าง pivot table ตามชื่อชีทครับ เช่น ถ้าผมลบชีทนั้นทิ้งแล้วสร้างชีทใหม่โดยใช้ชื่อชีทเดิมข้อมูลด้านในก็จะถูกนำมาสร้าง pivot table อยู่ พอจะมีวิธีมั้ยครับ

ตามไฟล์ตัวอย่างที่ผมแนบมานะครับ
ผมจะให้ชีท B นำข้อมูลในชีท A มาสร้าง pivot table โดยถ้าชีท A ถูกลบทิ้งแล้วสร้างชีทใหม่ที่มีชื่อว่าชีท A ข้อมูลด้านในก็จะยังถูกนำมาสร้าง Pivot table ในชีท B อยู่ครับ

ตัวอย่าง Code ตามที่ผมได้ศึกษาแล้วลองเขียนมาครับ (แต่ก็ยังไม่ได้)

Code: Select all

Sub pivot_table()
Dim pt_cache As PivotCache
Dim pt_table As PivotTable

Set pt_cache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Worksheets("A").Range("A1:I7000"))
Set pt_table = pt_cache.CreatePivotTable(TableDestination:=Worksheets("B").Range("A1"), TableName:="PivotTable1")
With pt_table
    .PivotFields("Item").Orientation = xlRowField
    .PivotFields("Oty.").Orientation = xlDataField
    .PivotFields("Day").Orientation = xlColumnField
    
End With

End Sub

Re: รบกวนสอบถามวิธีสร้างpivot table ด้วย VBA แบบอัตโนมัติ

Posted: Mon Sep 09, 2019 7:51 pm
by snasui
:D ให้ Clear ข้อมูลของชีต B ทิ้งไปก่อนตามตัวอย่าง Code ด้านล่างครับ

Code: Select all

Sub pivot_table()
    Dim pt_cache As PivotCache
    Dim pt_table As PivotTable
    Set pt_cache = ActiveWorkbook.PivotCaches.Add( _
        SourceType:=xlDatabase, _
        SourceData:=Worksheets("A").UsedRange)
    Worksheets("B").UsedRange.Clear 'Add this line
    Set pt_table = pt_cache.CreatePivotTable( _
        TableDestination:=Worksheets("B").Range("A1"), _
        TableName:="PivotTable1")
    With pt_table
        .PivotFields("Item").Orientation = xlRowField
        .PivotFields("Oty.").Orientation = xlDataField
        .PivotFields("Day").Orientation = xlColumnField
    End With
End Sub

Re: รบกวนสอบถามวิธีสร้างpivot table ด้วย VBA แบบอัตโนมัติ

Posted: Tue Sep 10, 2019 10:51 am
by manusin
ได้ตามที่ต้องการแล้วครับอาจารย์ ขอบคุณครับ :D

ขอสอบถามอีกหน่อยได้มั้ยครับ ตอนนี้ผมเป็นนักศึกษาอยู่อยากจะศึกษาเกี่ยวกับคำสั่งต่างๆใน VBA เช่น คำสั่ง UsedRange หมายถึงอะไร ใช้แบบไหน ประมาณนี้ครับ พอดีผมซื้อหนังสือมาอ่านเล่มนึงแต่เนื้อหาในหนังสือไม่มีอะไรพวกนี้เลยครับ อาจารย์พอมีหนังสือหรือเว็บแนะนำเกี่ยวกับคำสั่งโดยเฉพาะเลยมั้ยครับ

:? :? :?

Re: รบกวนสอบถามวิธีสร้างpivot table ด้วย VBA แบบอัตโนมัติ

Posted: Tue Sep 10, 2019 8:09 pm
by snasui
:D UsedRange หมายถึงเซลล์ที่มีการใช้งานทั้งหมดในชีตนั้น ๆ ครับ

ความรู้ต่าง ๆ เกี่ยวกับ VBA จะมีครบถ้วนสมบูรณ์อยู่ในเว็บของ Microsoft ครับ :arrow: https://docs.microsoft.com/en-us/office ... view/excel แต่จะค่อนข้างยากต่อการทำความเข้าใจสำหรับมือใหม่ ต้องค่อย ๆ ศึกษา การสอบถามปัญหาไปที่ฟอรัมใด ๆ ก็ทำให้เราได้ทราบเพิ่มขึ้นครับ

ตำราต่าง ๆ อาจจะเขียนได้ไม่ครบทุก Object, Event, Property, Method ของ Excel เพราะมีจำนวนมาก ทำได้เพียงแค่ยกตัวอย่างมาบางส่วนครับ

Re: รบกวนสอบถามวิธีสร้างpivot table ด้วย VBA แบบอัตโนมัติ

Posted: Wed Sep 11, 2019 8:45 am
by manusin
ขอบคุณอาจารย์มากๆครับ :D :D