Page 1 of 1
:: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::
Posted: Mon May 20, 2013 4:16 pm
by poipoi
จากไฟล์ที่แนบไปครับ ผมได้พยายามลองหาผลต่างของวันที่ต่างๆเหล่านี้ โดยใช้เงื่อนไขต่างๆแต่ก็ไม่ไหวครับไม่สามารถทำได้เลย
ผมจึงอยากจะมาขอคำปรึกษากูรูที่นี่ครับว่า;
ผมต้องการหาว่าใน
column A (1) จะมากกว่า column B(3) ได้ไม่เกิน 1 วัน
column C (5) ควรที่จะไม่น้อยกว่า column B(3)
column D (10) ควรที่จะไม่น้อยกว่า column C(5)
column E (12) ควรที่จะไม่น้อยกว่า column (D10)
column F (13) ควรที่จะมากกว่าทุกๆ column หรือ เท่ากับ Column E(12) แต่ทุกๆ column ไม่ควรเกิน column F(13)นี้ครับ
หากตรงตามเงื่อนไขทั้งหมดอยากให้โชว์ Pass หาก ไม่ผ่านโชว์ Not Pass
รบกวนกูรูทุกท่านแนะนำด้วยครับ
ขอบคุณครับ
Re: :: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::
Posted: Mon May 20, 2013 6:58 pm
by snasui

สูตรน่าจะเป็นตามด้านล่างครับ
=IF(AND(A2-B2=1,C2>=B2,D2<C2,E2>=D2,SUMPRODUCT(--(A2:E2>F2))=0),"Pass","Not Pass")
Re: :: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::
Posted: Mon May 20, 2013 9:18 pm
by poipoi
จากสูตรผมลองปรับนิดหน่อยได้ตามต้องการดังนี้ครับ
=IF(AND(A64-B64<=1,C64>=B64,D64>=C64,E64>=D64,F64>=E64,SUMPRODUCT(--(A64:E64>F64))=0),"Pass","Not Pass")
แต่มีปัญหาอยู่ 2 ปัญหาว่า
1. วันที่ในช่องนั้นๆถ้าเป็นช่องว่าง สูตรจะถูกตัดเป็น Not Pass ทันที ซึ่งในกรณีช่องว่างผมต้องการให้มันข้ามไปไม่ต้องนับต้องทำอย่างไรครับ
2. ฟอแมตของวันที่มี 2 แบบครับคือ dd/mm/yyyy กับ mm/dd/yyyy จะมีทางไหนบ้างครับที่จะปรับทั้งหมดให้เป็น mm/dd/yyyy บ้างครับ
ขอบคุณครับ
Re: :: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::
Posted: Mon May 20, 2013 9:55 pm
by snasui
poipoi wrote:1. วันที่ในช่องนั้นๆถ้าเป็นช่องว่าง สูตรจะถูกตัดเป็น Not Pass ทันที ซึ่งในกรณีช่องว่างผมต้องการให้มันข้ามไปไม่ต้องนับต้องทำอย่างไรครับ
ลองเขียนมาเป็นข้อความบรรยายเงื่อนไขทั้งหมดมาว่าเป็นอย่างไร จะได้ทราบถึงคำว่า
ข้ามค่านั้นไม่ต้องนับ มีลักษณะเป็นอย่างไร
poipoi wrote:2. ฟอแมตของวันที่มี 2 แบบครับคือ dd/mm/yyyy กับ mm/dd/yyyy จะมีทางไหนบ้างครับที่จะปรับทั้งหมดให้เป็น mm/dd/yyyy บ้างครับ
จะทราบได้อย่างไรครับว่าเซลล์นั้น ๆ เป็นรูปแบบใด

Re: :: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::
Posted: Mon May 20, 2013 10:17 pm
by poipoi
จากตรงนี้;
column A (1) จะมากกว่า column B(3) ได้ไม่เกิน 1 วัน
column C (5) ควรที่จะไม่น้อยกว่า column B(3)
column D (10) ควรที่จะไม่น้อยกว่า column C(5)
column E (12) ควรที่จะไม่น้อยกว่า column (D10)
column F (13) ควรที่จะมากกว่าทุกๆ column หรือ เท่ากับ Column E(12) แต่ทุกๆ column ไม่ควรเกิน column F(13)นี้ครับ
และจากไฟล์ที่แนบไปจะเห็นได้ว่า มีบาง cell มีค่าเป็น cell เปล่าๆไม่มีค่าอะไรครับ พอทำการใส่สูตรเข้าไปมันก็จะไม่สามารถหาค่าที่แท้จิงใน row นั้นๆไม่ได้
ผมจึงอยากที่จะให้ข้ามช่องว่างไป+เงื่อนไขเดิมจากข้างบนครับ
อย่างเช่น column C = 24/04/2013, column D = (Blank cell), column E = 30/04/2013
พอใส่สูตรเข้าไปเช่น IF(AND(D>=C,E>=D),"Pass","Not Pass") จากสูตรตัวอย่างจะเห็นว่า ถ้า Column D เป็นช่องว่างมันก็จะมีค่าเท่ากับศูนย์ไปโดยปริยาย
ดังนั้นสูตรมันก็จะโชว์ Not Pass ไปโดยปริยายเช่นกันครับ จากตรงนี้ผมอยากจะหาวิธีที่ทำให้มันข้ามช่องว่างนั้นไปโดยที่ยังคงเงื่อนไขเดิมครับ
ข้อ 2;
ในไฟล์ที่แนบไปมันโชว์เป็น 24/04/2013 กับ 04/24/2013 ครับ ผมเลยอยากจะให้มันกลายเป็นแบบ 04/24/2013 ทั้งหมดครับ
ซึ่งผมลองเช็คดูแล้วมันมีแค่ฟอแมตแค่ 2 ตัวนี้ครับ
ขอบคุณครับ
Re: :: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::
Posted: Mon May 20, 2013 10:31 pm
by snasui

ผมเข้าใจที่คุณต้องการทั้งสองข้อครับ
คุณควรเขียนเงื่อนไขมาเป็นคำพูดว่าเงื่อนไขเป็นแบบใด จากที่เขียนมา
poipoi wrote:อย่างเช่น column C = 24/04/2013, column D = (Blank cell), column E = 30/04/2013
พอใส่สูตรเข้าไปเช่น IF(AND(D>=C,E>=D),"Pass","Not Pass") จากสูตรตัวอย่างจะเห็นว่า ถ้า Column D เป็นช่องว่างมันก็จะมีค่าเท่ากับศูนย์ไปโดยปริยาย
ดังนั้นสูตรมันก็จะโชว์ Not Pass ไปโดยปริยายเช่นกันครับ จากตรงนี้ผมอยากจะหาวิธีที่ทำให้มันข้ามช่องว่างนั้นไปโดยที่ยังคงเงื่อนไขเดิมครับ
คำว่าข้ามคือ ข้ามอย่างไร เงื่อนไขในสูตรเป็นอย่างไรถึงจะเรียกว่าข้ามครับ
poipoi wrote:ข้อ 2;
ในไฟล์ที่แนบไปมันโชว์เป็น 24/04/2013 กับ 04/24/2013 ครับ ผมเลยอยากจะให้มันกลายเป็นแบบ 04/24/2013 ทั้งหมดครับ
ซึ่งผมลองเช็คดูแล้วมันมีแค่ฟอแมตแค่ 2 ตัวนี้ครับ
วัน เดือน ปี ขึ้นอยู่กับการกำหนด Regional and Language ว่าเป็นอย่างไร
หากข้อมูลเป็นอย่างนี้ เช่น วันที่ 2 เดือน 1 กับวันที่ 1 เดือน 2 เราจะทราบได้อย่างไรว่าค่าใดผิดและต้องเปลี่ยนเป็นค่าใด
กล่าวคือ
2/1/2013
1/2/2013
จะทราบได้อย่างไรว่าค่าใดเดือนขึ้นก่อนตามด้วยวัน หรือ วันขึ้นก่อนตามด้วยเดือน

Re: :: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::
Posted: Mon May 20, 2013 10:38 pm
by poipoi
จากข้อ 1. ข้ามในที่นี้อ้างอิงจาก :> column C = 24/04/2013, column D = (Blank cell), column E = 30/04/2013
ถ้า column D ไปหาค่ากับ column C แล้วค่าที่ได้ออกมาจะเป็น Not Pass แน่ๆ ผมจึงอยากจะให้เวลาเซล์ใดๆที่มีค่าเป็นช่องว่างเวลาไปหาค่ากับเซลก่อนหน้าแล้วผลจะไม่ออกมาเป็น Not Pass ครับ
ส่วนในกรณีของฟอแมตวันที่ จากที่อาจารย์แย้งเอาไว้ผมก็ลืมข้อนี้ไปครับ แล้วไฟล์ที่ได้นั้นมันถูกดึงออกมาจากระับบที่เขาต่างคนต่างคีย์เข้าไปกันไม่สามารถบังคับฟอแมตได้ครับ
ขอบคุณครับ
Re: :: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::
Posted: Mon May 20, 2013 10:50 pm
by snasui
poipoi wrote:ถ้า column D ไปหาค่ากับ column C แล้วค่าที่ได้ออกมาจะเป็น Not Pass แน่ๆ ผมจึงอยากจะให้เวลาเซล์ใดๆที่มีค่าเป็นช่องว่างเวลาไปหาค่ากับเซลก่อนหน้าแล้วผลจะไม่ออกมาเป็น Not Pass ครับ

ไม่เป็น Not Pass แล้วเป็นค่าใดครับ หากบอกไม่ได้ก็เขียนสูตรไม่ได้ครับ
หากบอกว่าไม่ต้องพิจารณาเงือนไขนั้น ให้พิจารณาเงื่อนไขที่เหลือต่อไป เช่นนี้จึงจะมีความเป็นไปได้ แต่ถ้ามีความซับซ้อนขนาดนั้นคงต้องหันไปใช้ VBA ซึ่งต้องเขียนมาก่อนครับ
Re: :: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::
Posted: Tue May 21, 2013 4:26 pm
by poipoi
เรียนอาจารย์ครับ
ขอบคุณมากครับสำหรับความเอาใจใส่ต่อลูกเวปครับ
ผมได้แก้ปัญหาโดยการไม่ไปคิดว่าที่เกิดปัญหาแทนแล้วครับแล้วก็เป้นผลที่น่าพอใจ ขอบคุณมากครับ
ต่อไปผมมีปัญหาข้อต่อไปจะถามอาจารย์และกูรู ผมจะขอต้องไปกระทู้ต่อไปครับ