20 December 2025

"ห้ามเปลี่ยนใจทีหลัง" หลักของ Excel 365 Calculation Engine

ในวงเล็บของสูตร Pivotby Groupby มีส่วนของ function ที่ใช้ใส่ keyword ว่าจะให้ Sum หรือ Count หรือให้ทำหน้าที่อื่น ซึ่งส่วนนี้ไม่สามารถเปลี่ยนใจให้ลิงก์คำว่า Sum หรือ Count หรือชื่ออื่นมาแทนได้

=GROUPBY(row_fields, values, function,
[field_headers], [total_depth], [sort_order],
[filter_array], [field_relationship])

=PIVOTBY(row_fields, col_fields, values, function,
[field_headers], [row_total_depth], [row_sort_order],
[col_total_depth], [col_sort_order], [filter_array], [relative_to])

ทำไมจึงเป็นแบบนี้ ดูแล้วไม่ยืดหยุ่นเลย เทียบกับ Subtotal ไม่ได้ที่เปลี่ยนเลข function_num เพื่อเลือกให้ทำหน้าที่ต่างกันไปได้นับสิบอย่าง

=SUBTOTAL(function_num, ref1, [ref2], …)

สาเหตุที่สูตร Pivotby Groupby ห้ามเปลี่ยนใจตรงส่วนของ function ทีหลังเพราะระบบคำนวณของ 365 จะต้อง compile สูตรที่ทำไว้ก่อนทุกครั้งเพื่อให้การคำนวณได้ประสิทธิภาพสูงสุด และโครงสร้างตารางคำตอบคงเดิมไม่เปลี่ยนแปลงอีก

Excel 365 ห้ามสร้างสูตรแบบใช้ทั้ง column แบบ Sum(A:A) เพราะหลักการคำนวณใหม่นี้จะบังคับให้ Excel ตรวจค่านับล้าน row แม้จะมีค่าเพียงไม่กี่เซลล์ก็ตาม
 
Excel 365 จะคำนวณช้าลงชัดเจนกว่ารุ่นก่อน

 

Copilot อธิบาย

คำตอบสั้น: Calculation Engine ใหม่ใน Excel 365 (Dynamic Arrays + Lambda + Spill Engine) มีข้อห้ามสำคัญคือ ไม่สามารถปิดหรือย้อนกลับไปใช้ Engine แบบเก่าได้ และยังมีหลายพฤติกรรมที่ Microsoft “ล็อกไว้” เพื่อความเสถียร เช่น การทำงานของ Dynamic Arrays, การจัดการ Error, และการตีความสูตรบางชนิด

---

🔎 สิ่งที่ “ห้ามเปลี่ยน” ใน Calculation Engine ใหม่
- Dynamic Arrays เป็นค่าเริ่มต้น
- ทุกสูตรที่คืนค่ามากกว่า 1 cell จะ “spill” อัตโนมัติ
- ไม่สามารถบังคับให้ทำงานแบบ array formula เก่า (Ctrl+Shift+Enter) ได้อีก
- การจัดการ Error
- Spill error (#SPILL!) ถูกออกแบบมาเป็นมาตรฐานใหม่
- ไม่สามารถปิดหรือเปลี่ยนให้กลับไปใช้ error แบบเดิมได้
- การตีความสูตร
- ฟังก์ชันใหม่อย่าง FILTER, SORT, UNIQUE, SEQUENCE, XLOOKUP, LAMBDA ถูกผูกกับ Engine ใหม่โดยตรง
- ไม่สามารถทำให้ทำงานใน Excel รุ่นเก่าได้
- การทำงานร่วมกับ Range References
- Engine ใหม่ตีความการอ้างอิงตาราง/ช่วงข้อมูลแบบ dynamic (เช่น Table structured references)
- ไม่สามารถบังคับให้ทำงานแบบ static ได้
- Backward Compatibility
- Microsoft ระบุชัดว่า Engine ใหม่ถูกออกแบบให้ “เสถียรและบังคับใช้” เพื่อรองรับอนาคตของ Excel
- ผู้ใช้ไม่สามารถเลือก “Classic Calculation Mode” ได้อีก

---

📌 ตัวอย่างผลกระทบ
- สูตรที่เคยใช้ INDEX + MATCH + Array CSE → ตอนนี้จะ spill อัตโนมัติ
- สูตรที่คืนค่าหลาย cell → ถ้ามีข้อมูลขวาง จะขึ้น #SPILL! แทนที่จะทำงานเงียบ ๆ
- ฟังก์ชันใหม่ (FILTER, SORT, UNIQUE) → ใช้ได้เฉพาะใน Engine ใหม่เท่านั้น

---

⚠️ ข้อควรระวังสำหรับ Workflow
- ห้ามใช้สูตรที่พึ่งพา behavior เก่า เช่น array formula แบบ manual เพราะจะไม่เสถียรใน Excel 365
- ห้ามคาดหวังผลลัพธ์เหมือนเดิม เมื่อเปิดไฟล์จาก Excel รุ่นเก่า → Engine ใหม่อาจตีความต่างออกไป
- ห้ามใช้กับงาน critical โดยไม่ตรวจสอบ เช่นการคำนวณทางการแพทย์หรือการเงินที่ต้องการความแม่นยำสูง → ต้องทดสอบสูตรใหม่เสมอ

---

สรุป: Calculation Engine ใหม่ใน Excel 365 เป็น “แกนกลาง” ที่ Microsoft บังคับใช้และไม่อนุญาตให้ผู้ใช้เปลี่ยนกลับไปใช้แบบเดิมอีก สิ่งที่ห้ามเปลี่ยนคือ Dynamic Arrays, Spill behavior, Error handling, และการตีความสูตรใหม่ ทั้งหมดถูกล็อกไว้เพื่อให้ Excel เดินหน้าไปในทิศทางเดียว 

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.