Page 1 of 1
เรียงลำดับงานตามวันกำหนดส่งงานเร็วที่สุดอย่างมีเงื่อนไข
Posted: Tue May 26, 2015 7:06 pm
by ploynattharat
ขออนุญาตสอบถามผู้รู้คะ
คือดิฉันอยากให้ผู้รู้ช่วยเหลือหน่อยคะ ที่คอลัมน์ J วันกำหนดส่งงาน คือดิฉันอยากเรียงลำดับงานตามวันกำหนดส่งที่จะถึงเร็วที่สุดก่อนคะ เมื่อกดคลิกปุ่มเรียงลำดับงานแล้ว สูตรที่ดิฉันใส่สามารถเรียงลำดับงานได้คะ แต่ทีนี้ ทีช่อง J2 และ J3 มีวันกำหนดส่งงานวันเดียวกันคะ ถ้าเกิดกรณีวันกำหนดส่งเดียวกัน อยากให้ไปดูต่อที่คอลัมน์ K คะ ยกตัวอย่างเช่น งานลำดับที่2 ระดับความยาก/ง่ายที่ช่องK3 = 3จะให้ทำงานก่อน งานลำดับที่1 ที่มีวันกำหนดส่งเดียวกัน แต่ระดับความยาก/ง่ายที่ช่อง k2 =1คะ
ปัญหาของดิฉันคือ เมื่อกดปุ่มเรียงลำดับงานตามวันกำหนดส่งแล้ว ถ้าวันกำหนดส่งงานตรงกัน ให้ดูระดับความยาก/ง่ายของงานคะ โดย3ทำงานก่อน2ทำงานก่อน1คะ อย่างตัวอย่างที่ส่งให้นั้น งานที่2 ควรไปอยู่ลำดับที่1 งานที่1ควรอยู่ลำดับที่2 งานที่4ควรอยู่ลำดับที่3 และงานลำดับที่3 ควรอยู่ลำดับที่4คะ
ขอบคุณมากคะ
Re: เรียงลำดับงานตามวันกำหนดส่งงานเร็วที่สุดอย่างมีเงื่อนไข
Posted: Tue May 26, 2015 7:19 pm
by snasui

ตัวอย่าง Code ครับ
Code: Select all
Sub EDD()
Range("B2:J100").Select
Range("J3").Activate
ActiveWorkbook.Worksheets("OrderData").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("OrderData").Sort.SortFields.Add Key:=Range( _
"J2:J100"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("OrderData").Sort.SortFields.Add Key:=Range( _
"K2:K100"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("OrderData").Sort
.SetRange Range("B2:K100")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("J2").Select
End Sub
Re: เรียงลำดับงานตามวันกำหนดส่งงานเร็วที่สุดอย่างมีเงื่อนไข
Posted: Tue May 26, 2015 7:56 pm
by ploynattharat
snasui wrote:
ตัวอย่าง Code ครับ
Code: Select all
Sub EDD()
Range("B2:J100").Select
Range("J3").Activate
ActiveWorkbook.Worksheets("OrderData").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("OrderData").Sort.SortFields.Add Key:=Range( _
"J2:J100"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("OrderData").Sort.SortFields.Add Key:=Range( _
"K2:K100"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("OrderData").Sort
.SetRange Range("B2:K100")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("J2").Select
End Sub
ลองใส่สูตรแล้วยังไม่ได้คะ
ที่ไฟล์ใหม่ที่แนบให้คะ หลังจากใส่สูตรแล้ว
ดิฉันลองใส่งานใหม่ วันกำหนดส่งคือ 7/8/2015 หลังจากกดเรียงงานแล้ว งานขึ้นไปอยู่ที่ลำดับที่2คะ โดยงานที่ลำดับที่ 1 วันกำหนดส่ง 10/8/2015 ที่จริงแล้ว งานลำดับที่2วันกำหนดส่งงานเร็วกว่างานลำดับที่1 งานควรจะขึ้นไปอยู่ลำดับที่1 งานลำดับที่ 3 กำหนดส่ง 9/8/2015 ควรขึ้นไปอยู่ลำดับที่2 และงานลำดับที่4 วันกำหนดส่งวันที่ 10/8/2015 มีวันกำหนดส่งตรงกับงานลำดับที่1 แต่ลำดับความยากง่าย ระดับที่3 ควรได้อยู่ลำดับงานก่อนงานที่1 ซึ่งลำดับความยาก/ง่ายอยู่ที่ระดับ1คะ เพราะฉะนั้นงานลำดับที่4 ควรอยู่ลำดับที่3 และงานลำดับที่1 ควรอยู่ลำดับที่4คะ
รบกวนช่วยดูให้อีกทีนะคะ
ขอบคุณคะ
Re: เรียงลำดับงานตามวันกำหนดส่งงานเร็วที่สุดอย่างมีเงื่อนไข
Posted: Tue May 26, 2015 10:00 pm
by snasui

Macro หรือ VBA เรียกว่า Code ไม่เรียกว่า สูตร ครับ
ให้ปรับ Code
.SetRange Range("B2:K100")เป็น
.SetRange Range("B1:K100") ครับ
Re: เรียงลำดับงานตามวันกำหนดส่งงานเร็วที่สุดอย่างมีเงื่อนไข
Posted: Wed May 27, 2015 9:21 am
by ploynattharat
snasui wrote:
Macro หรือ VBA เรียนว่า Code ไม่เรียกว่า สูตร ครับ
ให้ปรับ Code
.SetRange Range("B2:K100")เป็น
.SetRange Range("B1:K100") ครับ
ทำได้และคะ
ขอโทษที่ดิฉันใช้คำผิดนะคะ
ขอบคุณมากคะ
Re: เรียงลำดับงานตามวันกำหนดส่งงานเร็วที่สุดอย่างมีเงื่อนไข
Posted: Wed May 27, 2015 10:02 am
by snasui
ploynattharat wrote:snasui wrote: 
Macro หรือ VBA เรียนว่า Code ไม่เรียกว่า สูตร ครับ
ให้ปรับ Code
.SetRange Range("B2:K100")เป็น
.SetRange Range("B1:K100") ครับ
ทำได้
และคะ
ขอโทษที่ดิฉันใช้คำผิดนะคะ
ขอบคุณมากคะ

การใช้คำผิดตามข้างตนยังพอสื่อสารเข้าใจได้ ผมแจ้งไปเพื่อเพื่อน ๆ ที่เข้ามาอ่านจะได้ทราบไปด้วยกันว่าสิ่งใดเรียก Code, สูตร หรืออื่น ๆ เพื่อจะได้สื่อสารตรงกันครับ
ที่ฟอรัมถามตอบไม่อนุญาตให้ใช้ภาษาแชท หากทราบว่าเขียนผิดสามารถ Edit ได้ภายในเวลา 60 นาที
อ่านกฎด้านบนทุกข้อเพื่อทราบอีกรอบครับ

Re: เรียงลำดับงานตามวันกำหนดส่งงานเร็วที่สุดอย่างมีเงื่อนไข
Posted: Wed May 27, 2015 11:33 am
by ploynattharat
snasui wrote:ploynattharat wrote:snasui wrote: 
Macro หรือ VBA เรียนว่า Code ไม่เรียกว่า สูตร ครับ
ให้ปรับ Code
.SetRange Range("B2:K100")เป็น
.SetRange Range("B1:K100") ครับ
ทำได้แล้วคะ
ขอโทษที่ดิฉันใช้คำผิดนะคะ
ขอบคุณมากคะ

การใช้คำผิดตามข้างตนยังพอสื่อสารเข้าใจได้ ผมแจ้งไปเพื่อเพื่อน ๆ ที่เข้ามาอ่านจะได้ทราบไปด้วยกันว่าสิ่งใดเรียก Code, สูตร หรืออื่น ๆ เพื่อจะได้สื่อสารตรงกันครับ
ที่ฟอรัมถามตอบไม่อนุญาตให้ใช้ภาษาแชท หากทราบว่าเขียนผิดสามารถ Edit ได้ภายในเวลา 60 นาที
อ่านกฎด้านบนทุกข้อเพื่อทราบอีกรอบครับ

Re: เรียงลำดับงานตามวันกำหนดส่งงานเร็วที่สุดอย่างมีเงื่อนไข
Posted: Tue Jun 02, 2015 12:42 pm
by ploynattharat
อาจารย์คะ ขออนุญาตรบกวนหน่อยคะ
ที่worksheet ชื่อ dataorderdetail ที่ปุ่มกดเรียงลำดับที่ด้านขวาคะ
คือปุ่มนี้จะเรียงลำดับงานที่วันกำหนดส่งเร็วที่สุดก่อน(คอลัมน์ J) แต่ถ้าวันกำหนดส่งเดียวกัน จะไปเรียงลำดับความยาก/ง่ายต่อ ที่คอลัมน์K โดยลำดับ3 จะทำงานก่อนลำดับ2 และลำดับ ตามลำดับ แล้วถ้าวันกำหนดส่งและลำดับความยาก/ง่าย ตรงกันอีก จะไปเรียงลำดับ จำนวน(คอลัมน์ F) โดยจะนำจำนวนที่มากกว่าทำก่อน
คือตอนแรก ดิฉันใช้สูตรเรียงลำดับที่อาจารย์แก้ไขให้ นำไปใช้ สามารถเรียงลำดับได้ถูกต้องแล้วคะ
พอดิฉันเปลี่ยนชื่อ worksheetแล้ว แล้วไปแก้ไขcode ตรงชื่อworksheet ที่ปุ่มกดเรียงลำดับแล้วเกิด debug คะ
รบกวนอาจารย์ช่วยเหลือด้วยนะคะ
ขอบคุณมากคะ
Re: เรียงลำดับงานตามวันกำหนดส่งงานเร็วที่สุดอย่างมีเงื่อนไข
Posted: Tue Jun 02, 2015 1:10 pm
by snasui