snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบ Power Query, PivotTable, Power Pivot, Data Model, Chart, Dashboard
waraputti
Member
Posts: 2 Joined: Sun Apr 04, 2021 3:17 pm
Excel Ver: Mac OS office 365
#1
Post
by waraputti » Sun Apr 04, 2021 3:22 pm
ต้องการทำ pivot table โดยมี sub column ด้วยครับ ดังตัวอย่างตามรูปแนบไม่ทราบว่ามีวิธีการอย่างไรบ้าง จากรูปมีผักหลายชนิดในกลุ่ม vegetable, fruit, และ meat อยากจะทำ pivot table ลงถึงชนิดย่อยในแต่ละกลุ่มด้วยครับ
Attachments
Screen Shot 2021-04-04 at 15.18.38.png (28.28 KiB) Viewed 30 times
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Sun Apr 04, 2021 3:53 pm
กรุณาแนบไฟล์ Excel ที่มีตัวอย่างข้อมูลมาด้วยจะได้สะดวกต่อการตอบของเพื่อนสมาชิกครับ
snasui
Site Admin
Posts: 31191 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Sun Apr 04, 2021 8:33 pm
ต้วอย่างข้อมูลที่แนบมานั้นเป็นแบบรายงาน ควรทำข้อมูลให้เป็น Database เสียก่อนจึงจะนำไปสร้าง Report ด้วย Pivot Table ไม่ใช่นำรายงานไปสร้างรายงานครับ
ตัวอย่างการใช้สูตรช่วยเพื่อแปลงรายงานให้กลับไปเป็น Database ครับ
L2:P2 คีย์หัวคอลัมน์เป็น State, City, Type, Sub Type, Value ตามลำดับ
ที่ L3 คีย์
=IF(ROWS(L$3:L3)>COUNT($C$3:$J$8),"",INDEX(A$3:A$8,INT((ROWS(L$3:L3)-1)/COUNT($C$3:$J$3))+1))
Enter > Copy ไป M3 แล้ว Copy ลงด้านล่าง
ที่ N3 คีย์
=IF(L3="","",LOOKUP(CHAR(255),OFFSET($C$1,0,0,1,MOD(ROWS(N$3:N3)-1,COUNTA($C$2:$J$2))+1)))
Enter > Copy ลงด้านล่าง
ที่ O3 คีย์
=IF(L3="","",INDEX($C$2:$J$2,MOD((ROWS(O$3:O3)-1),COUNTA($C$2:$J$2))+1))
Enter > Copy ลงด้านล่าง
ที่ P3 คีย์
=IF(L3="","",SUMIFS(INDEX($C$3:$J$8,0,MATCH(O3,$C$2:$J$2,0)),$A$3:$A$8,L3,$B$3:$B$8,M3))
Enter > Copy ลงด้านล่าง
นำข้อมูลที่ได้ไปสร้างรายงานด้วย Pivot Table