wisit wrote:ขอบคุณท่านอาจารย์และคุณ bank9597 มากครับ ทำได้แล้วครับ
มีเรื่องรบกวนถามนิดนึงครับ สูตร
=SUMPRODUCT(--($J$3:$J$12143=O3),--($C$3:$C$12143<>""),$D$3:$D$12143+0)
มีผลทำให้เครื่องทำงานช้าไหมครับ

ผมเคยถามอาจารย์คนควนในคำถามประมาณนี้ คำตอบคือ อยู่ที่จำนวนของข้อมูล และสูตรที่ใช้งาน หากเป็นสูตรอาร์เรย์ เช่น
=SUM(IF($J$3:$J$12143=O3,IF($C$3:$C$12143<>"",$D$3:$D$12143+0,""))) ใช้กับข้อมูลปริมาณมากๆ ก็จะทำให้ช้า
ในกรณีใช้สูตร
=SUMPRODUCT(--($J$3:$J$12143=O3),--($C$3:$C$12143<>""),$D$3:$D$12143+0) ก็จะเร็วกว่าสูตรแรก แต่เนื่องจากสูตรต้องแปลง Text ให้เป็น number โดยการ +0 เข้าไป ก็จะทำให้ช้าลงไปอีกครับ
ต่อไปคือข้อมูล ในกรณีที่ข้อมูลจริงมีอยู่ไม่มาก เช่น 100 บรรทัด คุณควรกำหนดในสูตร แค่ 100 บรรทัด ตามจำนวนข้อมูลจริง ไม่ควรเผื่อบรรทัดไปมากเกินไปเช่น J3:J1214 แบบนี้ถือว่าเกินจำเป็น เพราะข้อมูลจริงมีแค่ 50 กว่าบรรทัด เป็นต้น
วิธีแก้คือการสร้าง rangname แบบไดนามิค จะช่วยได้เยอะ และก็ต้องมีวิธีการสร้าง rangeName อีกว่า สร้างอย่างไรจึงจะไม่ทำให้โปรแกรมทำงานช้า
ต่อมาคือทรัพยากรของเครื่อง และ เวอร์ชันเอ้กเซลล์ที่ใช้งาน
คอมสมัยใหม่นี้ไม่น่าจะมีปัญหาครับ สเป็คพื้นฐานก็เพียงพอเหลือเฟือต่อการใช้งานโปรแกรมเอ้กเซลล์แล้วครับ เว้นแต่เวลาให้โปรแกรมคำนวน เราดันเปิดโปรแกรมอื่นๆหนักๆไว้ด้วย เช่น IE Firefox ตระกูลตัดต่อ รีทัชภาพ เป็นต้น ก็มีส่วนในการคำนวนของโปรแกรมเช่นกัน
ต่อมาเวอร์ชั่น ควรเป็นเวอร์ชั่นที่ใหม่ เช่น 2007-2010 เวอร์ชั่นเหล่านนี้ถูกพัฒนามาค่อนข้างดีมาก สามารถทำงานได้รวดเร็ว เก็บข้อมูลได้เยอะขึ้นครับ
อย่างไรก็ตาม การสร้างตารางเก็บข้อมูลที่ถุกวิธีก็เป็นส่วนสำคัญอันดับต้นๆที่ต้องคำนึงถึง การเก็บข้อมูลดิบไว้เป็นฐานข้อมูล แล้วดึงมาแสดง เหล่านี้ต้องศึกษาจากเรื่องการสร้างฐานข้อมูลดูครับ
รอดูท่านอื่นๆมาให้ความเห็นอีกครับ
