Page 2 of 2

Re: วิธีใส่สูตรให้ค่าที่เกินเด้งไปเริ่มcellใหม่[สอบถาม]

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

Re: วิธีใส่สูตรให้ค่าที่เกินเด้งไปเริ่มcellใหม่[สอบถาม]

Posted: Tue Jul 28, 2015 3:22 pm
by snasui
:D เห็นทีจะต้องพึ่ง VBA ครับ :mrgreen:

Re: วิธีใส่สูตรให้ค่าที่เกินเด้งไปเริ่มcellใหม่[สอบถาม]

Posted: Tue Jul 28, 2015 3:47 pm
by klingnarang
snasui wrote::D เห็นทีจะต้องพึ่ง VBA ครับ :mrgreen:
ขอบคุณมากครับพี่ที่ช่วยเหลือ
ขอบคุณพี่ๆทุกคนที่ช่วยด้วยครับ
สำหรับ VBA ผมคงต้องศึกษาอีกนานครับเพราะเบื้องต้นได้ลองซื้อหนังสือมาศึกษาแล้ว(ตั้งแต่วันที่พีDhitiBankบอก)
รู้สึกปวดหัวขึ้นมาทันทีที่เห็นเลย แต่จะพยายามศึกษาต่อไปครับ

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

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
ได้วิธีแล้วครับ :idea: (ไม่ต้องสนใจที่ผมโพสต์ก่อนหน้านี้ครับ) ทำตารางแยกแต่ละโปรเซสจะทำให้ใช้สูตรได้ง่ายขึ้นจริงๆ ด้วย ลองแบบนี้ครับ ดูในไฟล์แนบประกอบ
  • 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 :arrow: 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 พอดีครับพี่