Page 1 of 1

สูตรหาผลรวมแบบมีเงินไข

Posted: Tue Jun 25, 2013 1:35 am
by wisit
รบกวนอาจารย์และเพื่อนๆ ช่วยหน่อยครับ ผมคิดมาหลายวันแล้ว แต่คิดไม่ออก สูตรที่ผมใช้ก็สามารถหาผลลัพธ์ได้ แต่ถ้าใช้สูตรดังกล่าวเครื่องจะทำงานช้า เพราะผมมีข้อมูลประมาณเกือบ 5,000 แถว และรายชื่อลูกค้าอีก 100 กว่ารายชื่อ จึงอยากได้สูตรที่แสดงผลลัพธ์แบบรวมจำนวนเงินของสินค้าทั้ง 5 สินค้า ตามบิลแต่ละบิลครับ :) (ตามไฟล์ที่แนบมาครับ)

Re: สูตรหาผลรวมแบบมีเงื่อนไข

Posted: Tue Jun 25, 2013 9:36 am
by nattasiray
เพราะคุณจัดเก็บข้อมูลโดยใช้ตารางข้อมูลแบบไขว้ (Crosstab) จึงไม่สามารถใช้สูตร SUMIF SUMIFS SUMPRODUCT เพื่อหาผลรวมอย่างมีเงื่อนไขนะสิครับ ต้องแก้ไขตารางข้อมูลเป็นตารางฐานข้อมูลก่อน


ผมเคยเตือนคุณวิสิทธิ์แล้วว่าให้แก้ไขตารางจัดเก็บข้อมูลให้อยู่ในรูปแบบฐานข้อมูลก่อนครับ
ดูกระทู้ที่ผมเตือนไว้ ที่ http://www.snasui.com/viewtopic.php?f=3 ... 798#p31798

จากหนังสือจัดการฐานข้อมูลด้วยไมโครซอฟต์เอ็กเซล ๒๐๑๐

หลักการออกแบบตารางเพื่อจัดเก็บข้อมูล

1. ข้อมูลตามคอลัมน์ เรียกว่า “เขตข้อมูล (Field)” ซึ่งเป็นข้อมูลเฉพาะเรื่อง
2. ข้อมูลในบรรทัดบนสุดของตาราง เช่น เซลล์ A1:G1 เรียกว่า “หัวตาราง (Field Name)” หรือ Header ใช้ระบุชื่อข้อมูลของแต่ละเขตข้อมูล (Field) ว่าเป็นเรื่องของ โดยหัวตารางบนสุดนี้ ต้องใช้แถวนอนเพียงแถวเดียวเท่านั้น ถ้าชื่อเขตข้อมูล (Field) ยาวมาก ต้องทำการตัดคำโดยกดแป้น Alt+Enter เพื่อจัดขึ้นบรรทัดใหม่ในเซลล์เดิม
3. ข้อมูลแนวนอนถัดจากบรรทัดแรกเรียกว่า “ระเบียน (Record)"
4. เว้นพื้นที่ว่างทางด้านขวาและด้านล่างของตารางข้อมูลเสมอเพื่อใช้เป็นพื้นที่รองรับข้อมูลที่อาจมีขึ้นในภายหลัง
5. ตารางเก็บข้อมูล ใช้สำหรับจัดเก็บข้อมูลเท่านั้น ห้ามมีการคำนวณ ห้ามผนวกเซลล์ ห้ามทำการจัดรูปแบบให้กับตารางเก็บข้อมูล เพื่อลดขนาดของ file
1. ควรใช้ Data Validation ในการตรวจสอบการป้อนข้อมูลของผู้ใช้ว่ากรอกเป็นตัวเลข หรือกรอกเป็นข้อความ หรือกรอกให้อยู่ในรายการที่มีให้เท่านั้น
2. ควรแยกข้อมูลแต่ละเรื่องออกจากกันเป็นคนละเขตข้อมูล (Field) ให้แยกแต่ละเรื่องให้ละเอียดเสมอ เช่น แยกเขตข้อมูล (Field) คำนำหน้าชื่อ ชื่อ นามสกุล ออกจากกัน หรือแยกข้อมูล เขตข้อมูล (Field) ตัวเลขออกจากตัวอักษร เพื่อสะดวกต่อการสืบค้น แก้ไข หรือสรุปผล
3. ห้ามตั้งชื่อเขตข้อมูล (Field) ในตารางเดียวกันซ้ำกัน
4. ชื่อเขตข้อมูล (Field) ควรเป็นภาษาอังกฤษเพราะเมื่อโอนข้อมูลขึ้นสู่ระบบฐานข้อมูลระดับใหญ่จะเห็นชื่อเขตข้อมูล (Field) ทันที
5. ชื่อเขตข้อมูล (Field) ไม่ควรเว้นวรรคระหว่างคำ มิฉะนั้นจะสร้างความยุ่งยากในการเขียนโปรแกรมในกรณีที่ทำการโอนข้อมูลขึ้นระบบฐานข้อมูลเรียบร้อยแล้ว


ตารางบันทึกข้อมูลมีการผนวกเซลล์ จึงยากแก้การสรุปผล

งานของคุณควรใช้ MS Access ครับ เนื่องจากต้องมีการเก็บประวัติการขาย จำนวนเงินที่เก็บได้ จำนวนเงินที่ยังไม่เก็บ เพื่อติดตามทวงถามหนี้

ผมแนะนำให้คุณว่าจ้างคนทำฐานข้อมูลบน MS Access ดีกว่าครับ เพราะผมเกรงว่าคุณใช้ความเคยชินของการออกแบบตารางบันทึกข้อมูลบน MS Excel ในปัจจุบันไปใช้กับการออกแบบฐานข้อมูลบน MS Access พาลออกรายงานไม่ได้ด้วย :shock: :shock: :o :o

Re: สูตรหาผลรวมแบบมีเงินไข

Posted: Tue Jun 25, 2013 10:21 am
by ysamroeng
ควรออกแบบตารางการเก็บข้อมูลเป็นลักษณะ "ฐานข้อมูล" (Database) เพื่อสะดวกในการประมวลผลข้อมูล เพราะจะมีฟังก์ชัน เช่น SUMIF, SUMPRODUCT และเครื่องมือช่วยหลายตัว เช่น PivotTable, Subtotals ซึ่งจะทำงานได้สะดวกขึ้นครับ

Re: สูตรหาผลรวมแบบมีเงินไข

Posted: Tue Jun 25, 2013 11:22 am
by วังวู ช่ง
wisit wrote:รบกวนอาจารย์และเพื่อนๆ ช่วยหน่อยครับ ผมคิดมาหลายวันแล้ว แต่คิดไม่ออก สูตรที่ผมใช้ก็สามารถหาผลลัพธ์ได้ แต่ถ้าใช้สูตรดังกล่าวเครื่องจะทำงานช้า เพราะผมมีข้อมูลประมาณเกือบ 5,000 แถว และรายชื่อลูกค้าอีก 100 กว่ารายชื่อ จึงอยากได้สูตรที่แสดงผลลัพธ์แบบรวมจำนวนเงินของสินค้าทั้ง 5 สินค้า ตามบิลแต่ละบิลครับ :) (ตามไฟล์ที่แนบมาครับ)
ลองตามนี้ครับ
ที่ O36=SUMPRODUCT(($B$3:$B$33=$N36)*($C$2:$L$2="จำนวนเงิน"),($C$3:$L$33)) COPY ลงล่างครับ

Re: สูตรหาผลรวมแบบมีเงินไข

Posted: Tue Jun 25, 2013 12:42 pm
by wisit
ขอบคุณคุณวัง วู ช่ง ที่แนะนำสูตร ขอบคุณคุณ nattasiray ที่ให้คำแนะนำดีๆ เดี๋ยวผมคงต้องศึกษาการทำรายงานแบบใช้ฐานข้อมูล (ผมไม่ค่อยรู้เรื่องฐานข้อมูลเท่าไหร่ เดี่ยวจะซื้อหนังสือที่คุณ nattasiray มาอ่าน ขอบคุณมากครับ :D ) และขอบคุณคุณ ysamroeng ที่ให้คำแนะนำ และทำตัวอย่างให้ดู ทำให้รู้ว่าควรทำรายงานในรูปแบบใด

ขอบคุณทั้ง 3 ท่านมากครับ :D :thup: