Page 1 of 1

Automatic sort

Posted: Mon Jul 02, 2012 5:12 pm
by Praman
สวัสดีครับ เพิ่งเริ่มต้น ทำตารางวางแผนการผลิตใหม่ครับ
ทำการวางแผนการผลิตเป็นรายวัน
มีไลน์การผลิตทั้งหมด 4 ไลน์
แต่ละลายการผลิต ผลิตสินค้าเหมือนกันบ้าง ต่างกันบ้าง
วันนี้ผลิตสินค้านี้ พรุ่งนี้อาจเปลี่ยนผลิตสินค้าตัวอื่น

ตรงช่องรวมรายการผลิต แต่ละรายการ อยากให้รวมแบบอัตโนมัติครับ
รบกวนดูรายละเอียดในไฟล์ที่แนบครับ

Re: Automatic sort

Posted: Mon Jul 02, 2012 5:24 pm
by bank9597
:D หากไม่ใช่มาโคร สามารถใช้สูตรได้หรือไม่ครับ

Re: Automatic sort

Posted: Mon Jul 02, 2012 5:29 pm
by Praman
ต้องการใช้แค่สูตรครับ
ขอบคุณครับ

Re: Automatic sort

Posted: Mon Jul 02, 2012 5:41 pm
by bank9597
:D ลองตามนี้ครับ
ที่เซลล์ H19 คีย์ =SUMPRODUCT(($E$3:$E$16<>"")/COUNTIF($E$3:$E$16,$E$3:$E$16&""))
ที่เซลล์ E21 คีย์
=IF(ROWS($E$21:E21)>$H$19,"",INDEX($E$3:$E$16,SMALL(IF($E$3:$E$16<>"",IF(MATCH($E$3:$E$16,$E$3:$E$16,0)=ROW($E$3:$E$16)-ROW($E$3)+1,ROW($E$3:$E$16)-ROW($E$3)+1)),ROWS($E$21:E21))))
กด Ctrl+Shift ค้าง ตามด้วยปุ่ม Enter จะได้เครื่องหมา {} คร่อมสูตรอยู่

หมายเหตุ สูตรไม่สามารถเรียงลำดับตัวอักษรได้ หากต้องการทำเช่นนั้นด้วย จำเป็นต้องใช้ VBA เท่านั้นครับ

Re: Automatic sort

Posted: Mon Jul 02, 2012 6:37 pm
by Praman
ขอบคุณมากครับ
แค่นี้ก็เพียงพอต่อการใช้งานแล้วครับ
ตัวอักษรไม่เรียงก็ไม่เป็นปัญหาครับ ผมคงใช้วิธีการคลุมช่วง แล้วกด Sort ทุกครั้งก็ได้ครับ

แต่อย่างไรก็ตาม คิดว่า VBA จะสะดวกกว่า
หากไม่เป็นการรบกวนจนเกินไป จะรบกวนให้เขียนโค้ด VBA
จะเอาไว้ศึกษาครับ

ขอบคุณอีกครั้งครับ

Re: Automatic sort

Posted: Mon Jul 02, 2012 6:47 pm
by snasui
:D สำหรับ VBA นั้นจำเป็นต้องเขียนมาเองครับ ติดตรงไหนค่อยมาถามกันครับ

Re: Automatic sort

Posted: Mon Jul 02, 2012 7:49 pm
by Praman
ไม่มีความรู้เรื่อง VBA เลยครับ
คงต้องศึกษาอีกสักระยะ

เรียนถามคุณ bank9597 ครับ
สูตรช่อง E21 พอที่จะนั่งทำความเข้าใจได้
แต่สูตรสั้นๆ ช่อง H9 พยายามทำความเข้าใจแล้ว แต่ก็ยังไม่เข้าใจที่มาที่ไปเลยครับ
รบกวนขอความกระจ่าง ถึงสาเหตุที่ใช้สูตรนี้ด้วยครับ

ขอบคุณมากครับ

Re: Automatic sort

Posted: Mon Jul 02, 2012 8:32 pm
by snasui
:D จากสูตร

=SUMPRODUCT(($E$3:$E$16<>"")/COUNTIF($E$3:$E$16,$E$3:$E$16&""))

เป็นสูตรสำหรับการนับค่าโดยค่าที่ซ้ำกันให้นับเป็น 1 ค่าเท่านั้น

ความหมายของ $E$3:$E$16<>"" เป็นการเทียบว่า $E$3:$E$16 เป็นค่าว่างหรือไม่ เซลล์ใดว่างก็จะแสดงผลลัพธ์เป็น True ถ้าไม่ว่างก็จะแสดงผลลัพธ์เป็น False

ส่วน COUNTIF($E$3:$E$16,$E$3:$E$16&"") เป็นการนับว่า ในช่วง $E$3:$E$16 มีค่า $E$3:$E$16&"" อยู่จำนวนเท่าไร เป็นการใช้ Countif แบบประยุกต์เพื่อทีจะนับโดยนำค่าว่างมานับด้วย ผลลลัพธ์จะได้ออกมาเป็นเช่น (เป็นการยกตัวอย่าง ไม่ได้อ้างอิงกับสูตรเดิม สร้างขึ้นเพื่อประกอบความเข้าใจ)

=Sumproduct({True,True,False,False,False}/{1,1,3,3,3})

เนื่องจากค่า True คือ 1 และ False คือ 0 ก็จะกลายเป็น =Sumproduct({1,1,0,0,0}/{1,1,3,3,3}) และจะกลายเป็น =Sumproduct({1/1,1/1,0/3,0/3,0/3}) และจะกลายเป็น 2 เช่นนี้เป็นต้น

การแกะสูตรสามารถคลุมส่วนประกอบใด ๆ ที่ต้องการทราบผลลัพธ์แล้วกดแป้น F9 ครับ

Re: Automatic sort

Posted: Mon Jul 02, 2012 10:40 pm
by Praman
ขอบคุณมากครับ