ทำไม ... Pivot Table ไม่ update ข้อมูลให้ทันที
ต้องสั่ง Refresh ก่อนเสมอ
ก่อนอื่นต้องทราบไว้เสมอว่า Pivot Table ไม่ได้นำข้อมูลจากตารางที่เห็นไปใช้คำนวณโดยตรง แต่จะสร้าง Pivot Cache ขึ้นมาจากตารางฐานข้อมูลอีกต่อหนึ่ง ซึ่งจะทำให้แฟ้มใหญ่ขึ้น และเป็นพื้นที่ที่ใช้เก็บสูตรคำนวณที่ใช้ใน Pivot อีกต่อหนึ่ง
หลายคนอยากให้ Pivot Table คำนวณใหม่ให้ทันที ซึ่งอาจจะไม่เหมาะก็ได้ครับ
1. ถ้าปล่อยให้ Pivot คำนวณแบบอัตโนมัติ เช่นกำหนดใน Options ให้ Refresh on Open รือใช้ VBA ควบคุม อาจจะเสียเวลานานกว่าจะ Refresh เสร็จ
2. ต้องมั่นใจก่อนว่าโครงสร้างฐานข้อมูลที่เป็น Source ของ Pivot Cache ยังคงเดิม เพราะหากโครงสร้างเปลี่ยนไป เช่น มีการ delete column หรือเปลี่ยนข้อความของหัวตาราง จะทำให้ตาราง Pivot หยุดทำงานทันทีเมื่อสั่ง Refresh
3. ต้องควบคุมให้ Pivot นำรายการข้อมูลที่เพิ่มขึ้นมาใช้เมื่อสั่ง Refresh โดยใช้คำสั่ง Table ช่วยในการรับรู้รายการข้อมูลที่เพิ่มขึ้นหรือจัดการขยายขนาดของ Source เองให้มีขนาดที่ใหญ่ขึ้นตามจำนวนรายการใหม่ที่เพิ่มขึ้น
4. ต้องตรวจสอบข้อมูลที่มีเพิ่มขึ้นว่ายังคงมีสถานะเหมือนกับรายการที่มีมาก่อนไหม เช่น เป็นข้อมูลที่เป็นตัวเลข หรือเป็นตัวอักษร
5. ต้องการเปรียบเทียบกับข้อมูลเก่าหรือดูข้อมูลเก่าก่อนจะ Refresh ว่ามียอดเป็นอย่างไร
6. ต้องการสร้างตาราง Pivot ขึ้นใหม่อีกตารางหนึ่ง ซึ่งจะนำข้อมูลใน Cache ไปสร้าง เมื่อสั่ง Refresh จะทำให้ Cache มีข้อมูลที่แก้ไขแล้วตามฐานข้อมูล แต่หากนำฐานข้อมูลไปสร้าง Pivot Table โดยยังไม่ได้สั่ง Refresh จะพบว่ายังคงได้ยอดเก่าเพราะ Cache ยังคงมีข้อมูลเก่าอยู่
นี่คือสาเหตุที่ Pivot Table ไม่ได้คำนวณใหม่ให้ทันทีครับ ซึ่งหลักการนี้นำไปไช้กับการใช้ Pivot Query อีกด้วย ก่อนคิดอยากจะให้ Refresh แบบอัตโนมัติต้องตรวจสอบให้ดีก่อนเสมอ