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
:D สูตรน่าจะเป็นตามด้านล่างครับ

=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
:shock: ผมเข้าใจที่คุณต้องการทั้งสองข้อครับ

คุณควรเขียนเงื่อนไขมาเป็นคำพูดว่าเงื่อนไขเป็นแบบใด จากที่เขียนมา
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 ครับ
:D ไม่เป็น Not Pass แล้วเป็นค่าใดครับ หากบอกไม่ได้ก็เขียนสูตรไม่ได้ครับ

หากบอกว่าไม่ต้องพิจารณาเงือนไขนั้น ให้พิจารณาเงื่อนไขที่เหลือต่อไป เช่นนี้จึงจะมีความเป็นไปได้ แต่ถ้ามีความซับซ้อนขนาดนั้นคงต้องหันไปใช้ VBA ซึ่งต้องเขียนมาก่อนครับ

Re: :: การหาผลต่างของวันแบบมีหลายเงื่อนไข ::

Posted: Tue May 21, 2013 4:26 pm
by poipoi
เรียนอาจารย์ครับ

ขอบคุณมากครับสำหรับความเอาใจใส่ต่อลูกเวปครับ :D

ผมได้แก้ปัญหาโดยการไม่ไปคิดว่าที่เกิดปัญหาแทนแล้วครับแล้วก็เป้นผลที่น่าพอใจ ขอบคุณมากครับ

ต่อไปผมมีปัญหาข้อต่อไปจะถามอาจารย์และกูรู ผมจะขอต้องไปกระทู้ต่อไปครับ