Page 2 of 2
Re: วิธีใส่สูตรให้ค่าที่เกินเด้งไปเริ่มcellใหม่[สอบถาม]
Posted: Mon Jul 27, 2015 4:32 pm
by klingnarang
snasui wrote:
ลองช่วยสรุปมาพอสังเขปอีกทีว่าเซลล์ AK8 ตามภาพจะมีลักษณะการวางข้อมูลอย่างไรเมื่อไม่มี Process อื่นมาต่อท้ายครับ
เมื่อจัดเรียงข้อมูลจะเป็นช่องว่างตามรูปครับพี่และเมื่อมีorderใหม่เข้ามาก็จะมีการจัดเรียงและระยะเวลาแต่ละProcessเข้ามาใหม่เรื่อยๆครับ
แต่ทุกorder จะจบลงด้วยprocess PK เท่านั้นครับ
PK.jpg
Re: วิธีใส่สูตรให้ค่าที่เกินเด้งไปเริ่มcellใหม่[สอบถาม]
Posted: Tue Jul 28, 2015 3:22 pm
by snasui

เห็นทีจะต้องพึ่ง VBA ครับ

Re: วิธีใส่สูตรให้ค่าที่เกินเด้งไปเริ่มcellใหม่[สอบถาม]
Posted: Tue Jul 28, 2015 3:47 pm
by klingnarang
snasui wrote:
เห็นทีจะต้องพึ่ง VBA ครับ

ขอบคุณมากครับพี่ที่ช่วยเหลือ
ขอบคุณพี่ๆทุกคนที่ช่วยด้วยครับ
สำหรับ VBA ผมคงต้องศึกษาอีกนานครับเพราะเบื้องต้นได้ลองซื้อหนังสือมาศึกษาแล้ว(ตั้งแต่วันที่พีDhitiBankบอก)
รู้สึกปวดหัวขึ้นมาทันทีที่เห็นเลย แต่จะพยายามศึกษาต่อไปครับ
ขอบคุณอีกครั้งครับ

Re: วิธีใส่สูตรให้ค่าที่เกินเด้งไปเริ่มcellใหม่[สอบถาม]
Posted: Sun Aug 02, 2015 2:22 pm
by DhitiBank
ผมลองทำมาตลอด 4-5 วันที่ผ่านมา คิดแต่โจทย์นี้โจทย์เดียวเลย เขียนเต็มหน้ากระดาษ A4 ไปหมด สรุปคือได้มาแค่ 3 process ถัดจากนั้นเพี้ยนแล้วครับไม่ไหวแล้ว ยอมแพ้ เงื่อนไขเยอะเหลือเกิน (+_+)!
Re: วิธีใส่สูตรให้ค่าที่เกินเด้งไปเริ่มcellใหม่[สอบถาม]
Posted: Sun Aug 02, 2015 11:59 pm
by DhitiBank
ได้วิธีแล้วครับ

(ไม่ต้องสนใจที่ผมโพสต์ก่อนหน้านี้ครับ) ทำตารางแยกแต่ละโปรเซสจะทำให้ใช้สูตรได้ง่ายขึ้นจริงๆ ด้วย ลองแบบนี้ครับ ดูในไฟล์แนบประกอบ
- 1. ในตารางโปรเซสแรก (ตารางบนสุด) เซลล์ B3 คีย์
=IF(SUM(B$2:B2)-B$2>=580,0,
MIN(INDEX(OFFSET('Mold total'!$N$3,1,MATCH($A$1,_ProjNm,0),5),MATCH($A3,'Mold total'!$D$4:$D$8,0))-SUM($A3:A3)+$A3,580-SUM(B$2:B2)+B$2))
Enter --> คัดลอกไปทางขวาและลงล่างจนสุดตารางโปรเซสแรก
2. ในตารางโปรเซสต่อมา เช่นจากตัวอย่างคือที่เซลล์ B11 คีย์
=IF(COLUMNS($B11:B11)<LOOKUP(1,1/($B3:$AF3>0),$B$2:$AF$2),0,IF(OR(LOOKUP(1,1/($B3:$AF3>0),$B3:$AF3)>=580,SUM(B$10:B10)-B$10>=580),0,IF(SUM($A11:A11)-$A11=0,MIN(580-SUM(B$10:B10)+B$10,INDEX(OFFSET('Mold total'!$N$3,1,MATCH($A$9,_ProjNm,0),5),MATCH($A3,'Mold total'!$D$4:$D$8,0))-SUM($A11:A11)+$A11,580-IF(LOOKUP(1,1/($B3:$AF3>0),$B$2:$AF$2)<>B$2,0,LOOKUP(1,1/($B3:$AF3>0),$B3:$AF3))),MIN(580,INDEX(OFFSET('Mold total'!$N$3,1,MATCH($A$9,_ProjNm,0),5),MATCH($A3,'Mold total'!$D$4:$D$8,0))-SUM($A11:A11)+$A11))))
Enter --> คัดลอกไปทางขวาและลงล่างจนสุดตารางโปรเซสนั้นๆ
3. หากสร้างตารางใหม่โปรเซสใหม่ ก็คัดลอกตารางแล้ววางต่อกันไปแบบตัวอย่าง จากนั้นคัดลอกสูตร เช่น สมมติจะคัดลอกสูตรจาก LL1
LL2 ก็ให้คัดลอกสูตรจากเซลล์ B11 ไปวางที่เซลล์ B19 แล้วเปลี่ยนค่าทีไฮไลต์สีน้ำเงินกับสีแดงเอาไว้
สีน้ำเงิน = แถวของวันที่ในตารางโปรเซสนั้นๆ (ดูตัวอย่างแต่ละตารางประกอบ)
สีแดง = ชื่อโปรเซส ได้แก่ตำแหน่งเซลล์ซ้ายบนของตารางนั้นๆ

สิ่งที่ต้องระวังคือ
ชื่อ Item ในตารางจะต้องเป็นตัวเลขเท่านั้นครับ
ปล. ชีท List ผมเอาไว้ทำ Named Range ที่ชื่อ _ProjNm หากลบออกจะทำให้สูตรผิดพลาด หากโปรเซสไม่ได้มีนอกเหนือจากนี้ อาจไปแก้ Named Range ที่ว่านี้ให้อ้างอิงไปในชีท Mold Total ก่อน แล้วค่อยลบชีท List ออกนะครับ
Re: วิธีใส่สูตรให้ค่าที่เกินเด้งไปเริ่มcellใหม่[สอบถาม]
Posted: Tue Aug 04, 2015 6:55 pm
by klingnarang
ขอบคุณมากครับ
ผมกำลังปวดหัวกับ VBA พอดีครับพี่