Page 1 of 1

[IF] ปัญหาด้านการซ้อน if ครับ

Posted: Thu Apr 03, 2014 6:08 pm
by poipoi
สวัสดีครับอาจารย์ทุกท่าน

วันนี้ผมมีปัญหาการใช้งาน if ที่ค่อนข้างซับซ้อนครับ จึงอยากจะมาขอคำแนะนำครับ

จากไฟล์แนบครับ

ที่ U9 ผมได้รับเงื่อนไขใหม่มาครับว่า

ถ้าที่ F9/H9 เป็น DE,UK แล้ว O9 มีค่าเป็น 20G/20H (L) หรือ 40G/40H (L) จะถูกปรับค่าใหม่เป็น 350 บาท สำหรับ 1-12 เดือน (column L), 175 บาท สำหรับ 13-24 เดือน (Column M) ส่วนถ้าเป้น ประเทศอื่นๆที่ไม่ใช่ DE, UK ก็จะมีค่าเป็น125 บาทครับ (คือการนำจำนวนเงินไปคูณกับใน column นั้นๆครับ)

เช่นกันกับอีกเขื่อนไข
ถ้าที่ F9/H9 เป็น JP,CN แล้ว O9 มีค่าเป็น 20G/20H (S) หรือ 40G/40H (S) จะถูกปรับค่าใหม่เป็น 225 บาท สำหรับ 1-12 เดือน (Column L), 125 บาท สำหรับ 13-24 เดือน (Column M), ส่วนถ้าเป็นประเทภอื่นๆที่ไม่ใช่ JP, CN ก็จะมีค่าเป็น 62.5 บาทครับ

ซึ่งเงื่อนไขเดิมคือ 1-6 เดือน * 100, 7-12 เดือน * 50, +12 เดือน *25 % ครับ

ผมได้ลองเขียนเองแล้วจะได้เป็น

Code: Select all

=(IF(O9="K.G.",(L9*0.5),IF(O9="CBM",(L9*25),IF(OR(O9="20G/20H (L)",O9="40G/40H (L)"),IF(OR(F9="DE",F9="UK",H9="DE",H9="UK"),(L9*350),(L9*125)))))+IF(O9="K.G.",(M9*0.5),IF(O9="CBM",(M9*15),IF(OR(O9="20G/20H (L)",O9="40G/40H (L)"),IF(OR(F9="DE",F9="UK",H9="DE",H9="UK"),(M9*175),(M9*125)))))+IF(O9="K.G.",(N9*0.5),IF(O9="CBM",(N9*15))))+(IF(O9="K.G.",(L9*0.5),IF(O9="CBM",(L9*25),IF(OR(O9="20G/20H (S)",O9="40G/40H (S)"),IF(OR(F9="JP",F9="CN",H9="JP",H9="CN"),(L9*225),(L9*62.5)))))+IF(O9="K.G.",(M9*0.5),IF(O9="CBM",(M9*15),IF(OR(O9="20G/20H (S)",O9="40G/40H (S)"),IF(OR(F9="JP",F9="CN",H9="JP",H9="CN"),(M9*125),(M9*62.5)))))+IF(O9="K.G.",(N9*0.5),IF(O9="CBM",(N9*15))))
ซึ่งพอลองใช้แล้วค่าตรง K.G หรือ CBM จะคลาดเคลื่อนครับคือมันจะรวมกัน

จึงอยากจะเรียนถามอาจารย์ว่าจะมีวิธีรวมสูตรกันอย่างไรครับ

ขอบคุณครับ

Re: [IF] ปัญหาด้านการซ้อน if ครับ

Posted: Thu Apr 03, 2014 6:39 pm
by snasui
:D ไม่จำเป็นต้องเขียนมาเป็นสูตรครับ ให้อธิบายมาว่าเซลล์ใดต้องการคำตอบเป็นเท่าใดด้วยเงื่อนไขใดมาก็เพียงพอแล้วครับ

ผมอ่านที่อธิบายมาด้านบนแล้วกับสูตรที่เขียนมาไม่ได้สอดคล้องกัน ชวยอธิบายมาใหม่โดยคำนึงถึงข้อความในบรรทัดบนครับ

Re: [IF] ปัญหาด้านการซ้อน if ครับ

Posted: Fri Apr 04, 2014 9:09 am
by poipoi
column L-N จะเป็น user ที่บันทึกลงไปเองครับ

ที่ u9 จะเป็นการคำนวนเพื่อไปโชว์ค่าใน R9 ครับ

เงื่อนไขคือ ถ้าที่ column F และ H เป็น DE หรือ GB แล้ว column O เป็น 20G/20H (L) หรือ 40G/40H (L) ที่ L9 จะคูณกับ 350 (ตามเงื่อนไข) หากบันทึกลงใน column M ก็จะคูณกับ 175 หาก column F และ H ไม่ใช่ทั้ง DE และ GB ที่ L9 หรือ M9 ก็จะคูณกับ 125 ครับ

เช่นกันกับเงื่อนไขของ JP และ CN
ถ้าที่ F / H เป็น JP หรือ CN แล้ว column O เป็น 20G/20H (S) หรือ 40G/40H (S) ที่ L9 จะคูณกับ 225 (ตามเงื่อนไข) หากบันทึกลง column M ก็จะต้องคูณกับ 125 ถ้าที่ F / H ไม่ใช่ทั้ง JP และ CN ที่ L9 หรือ M9 ก็จะคูณกับ 62.5 ครับ

ขอบคุณครับ

Re: [IF] ปัญหาด้านการซ้อน if ครับ

Posted: Fri Apr 04, 2014 6:40 pm
by snasui
:D จาก
poipoi wrote: column L-N จะเป็น user ที่บันทึกลงไปเองครับ

ที่ u9 จะเป็นการคำนวนเพื่อไปโชว์ค่าใน R9 ครับ

เงื่อนไขคือ ถ้าที่ column F และ H เป็น DE หรือ GB แล้ว column O เป็น 20G/20H (L) หรือ 40G/40H (L) ที่ L9 จะคูณกับ 350 (ตามเงื่อนไข) หากบันทึกลงใน column M ก็จะคูณกับ 175 หาก column F และ H ไม่ใช่ทั้ง DE และ GB ที่ L9 หรือ M9 ก็จะคูณกับ 125 ครับ
เซลล์ U9 ผมเข้าใจว่าให้นำ L9+M9 หลังจากที่คำนวณมาแล้ว สามารถเขียนได้เป็น

=L9*IF(AND(COUNT(FIND({"DE","GB"},F9&H9)),COUNT(FIND({"20G/20H (L)","40G/40H (L)"},O9))),350,125)+M9*IF(AND(COUNT(FIND({"DE","GB"},F9&H9)),COUNT(FIND({"20G/20H (L)","40G/40H (L)"},O9))),175,125)

Enter

ส่วนด้านล่างนี้ถ้าต้องบวกเข้าไปด้วยก็ลองเขียนเพิ่มเข้าไปด้วย Concept เดียวกันครับ
snasui wrote:เช่นกันกับเงื่อนไขของ JP และ CN
ถ้าที่ F / H เป็น JP หรือ CN แล้ว column O เป็น 20G/20H (S) หรือ 40G/40H (S) ที่ L9 จะคูณกับ 225 (ตามเงื่อนไข) หากบันทึกลง column M ก็จะต้องคูณกับ 125 ถ้าที่ F / H ไม่ใช่ทั้ง JP และ CN ที่ L9 หรือ M9 ก็จะคูณกับ 62.5 ครับ

Re: [IF] ปัญหาด้านการซ้อน if ครับ

Posted: Tue Apr 08, 2014 9:02 am
by poipoi
เบื้องต้นสามารถใช้งานได้ครับผมมีอีก 2 คำถามครับ

1. หากจะนำทั้งสองสูตรมารวมกันควรจะทำอย่างไรครับ (สองสูตรในที่นี้หมายถึง ที่คำนวนในส่วนของ DE/GB และ JP/CN ครับ

2. มีอีก 1 เงื่อนไขที่ต้องรวมไปด้วยครับ ซึ่งได้ลองใส่ไปหน้าสูตรของ L และ M 9 แล้วสามารถใช้งานได้แค่ L9 พอลองกับ M9 กับไม่คำนวณให้ครับ

=IF(O9="K.G.",(L9*0.5),IF(O9="CBM",(L9*25),L9*IF(AND(COUNT(FIND({"DE","GB"},F9&H9)),COUNT(FIND({"20G/20H (L)","40G/40H (L)"},O9))),350,125)+IF(O9="K.G.",(M9*0.5),IF(O9="CBM",(M9*15),M9*IF(AND(COUNT(FIND({"DE","GB"},F9&H9)),COUNT(FIND({"20G/20H (L)","40G/40H (L)"},O9))),175,125))))+IF(O9="K.G.",(N9*5),IF(O9="CBM",(N9*15),"")))

ขอบคุณครับ

Re: [IF] ปัญหาด้านการซ้อน if ครับ

Posted: Tue Apr 08, 2014 9:30 pm
by snasui
:D อีกหนึ่งเงื่อนไขคืออะไรให้เขียนบรรยายมาแทนเขียนเข้าไปในสูตรครับ อย่าพยายามอธิบายด้วยสูตร ให้อธิบายมาเป็นข้อความครับ

สำหรับการรวมสูตรผมเขียนอธิบายไว้ตามด้านบนแล้ว หากเป็นการบวกเข้าไปก็สามารถบวกเข้าไปเองได้ ถ้าไม่ใช่ก็เขียนอธิบายมาใหม่ครับ

Re: [IF] ปัญหาด้านการซ้อน if ครับ

Posted: Wed Apr 09, 2014 8:35 am
by poipoi
ต้องขอภัยด้วยครับ

อีกเงื่อนไขคือ ถ้า O9 เป็น K.G. ให้ L9, M9, N9 คูณด้วย 0.5 ครับ, ถ้า O9 เป็น CBM ให้ L9 คูณ 25, M9 และ N9 คูณ 15 ตามแต่ว่าบันทึกลงช่องไหนครับ

ส่วนเรื่องการรวมสูตรในที่นี้ไม่ใช่การรวม L+M+N ครับ แต่เป็นการรวมสูตรของเงื่อนไข 20G/20H (L), 40G/40H (L) กับ 20G/20H (S), 40G/40H (S) ซึ่งมันจะต้องถูกเขียนออกมาเป็นสองชุด

ขอบคุณครับ

Re: [IF] ปัญหาด้านการซ้อน if ครับ

Posted: Thu Apr 10, 2014 8:25 am
by snasui
:D อ่านแล้วยังไม่กระจ่างครับ

ลองสรุปการเขียนสูตรเฉพาะที่ U9 เซลล์เดียวมาให้ครบทุกเงื่อนไขครับ

Re: [IF] ปัญหาด้านการซ้อน if ครับ

Posted: Thu Apr 10, 2014 9:50 am
by poipoi
เอาใหม่ครับ

ถ้า O9 เป็น K.G. ที่ L9-N9 จะต้องคูณ 0.5, ถ้า O9 เป็น CBM ที่ L9 จะคูณ 25, M9-N9 จะคูณ 15 (หากมีการบันทึกลงช่องนั้นๆ)
ถ้า O9 เป็น 20G/20H (S) หรือ 40G/40H (S)แล้ว F/H เป็น JP หรือ CN ที่ L9 จะคูณ 225 ถ้าไม่ใช่ JP หรือ CN จะคูณ 62.5 (ถ้าหากมีการบันทึกลงที่ M9 ด้วย ก็จะคูณด้วย 125 ถ้าไม่ใช่จะคูณด้วย 62.5) อีกเงื่อนไขคือถ้า O9 เป็น 20G/20H (L) หรือ 40G/40H (L) แล้ว F/H เป็น GBหรือDE ที่ L9 จะคูณ 350 ถ้าไม่ใช่ GB หรือ DE จะคูณ 175 (หากมีการบันทึกลงที่ M9ด้วย ก็จะคูณ 175 ถ้าไม่ใช่คูณด้วย 125) ครับ

Re: [IF] ปัญหาด้านการซ้อน if ครับ

Posted: Thu Apr 10, 2014 3:06 pm
by snasui
:D ผมปรับเงื่อนไขมาใหม่ตามที่ผมเข้าใจมาตามด้านล่าง
  1. ถ้า O9 เป็น K.G. แล้ว ให้นำ L9:N9 คูณด้วย 0.5
  2. ถ้า O9 เป็น CBM แล้ว ให้นำ L9 คูณ 25 บวกกับ M9:N9 คูณ 15
  3. ถ้า O9 เป็น 20G/20H (S) หรือ 40G/40H (S) และ F9 หรือ H9 เป็น JP หรือ CN แล้ว ให้นำ L9 คูณ 225 บวกกับ M9 คูณ 125 ถ้า F9 หรือ H9 ไม่ใช่ JP หรือ CN ให้นำ L9 คูณ 62.5 บวกกับ M9 คูณด้วย 62.5
  4. ถ้า O9 เป็น 20G/20H (L) หรือ 40G/40H (L) และ F9 หรือ H9 เป็น GB หรือ DE แล้ว ให้นำ L9 คูณ 350 บวกกับ M9 คูณ 175 ถ้า F9 หรือ H9 ไม่ใช่ GB หรือ DE ให้นำ L9 คูณ 175 บวกกับ M9 คูณ 125
สูตรที่ U9 จะได้เป็น

Code: Select all

=IF(O9="K.G.",L9*0.5+M9*0.5+N9*0.5,IF(O9="CBM",L9*25+M9*15+N9*15,IF(AND(ISNUMBER(FIND(O9,"20G/20H (L) 40G/40H (L)")),OR(F9="JP",H9="CN")),L9*225+M9*125,IF(AND(ISNUMBER(FIND(O9,"20G/20H (L) 40G/40H (L)")),OR(F9<>"JP",H9<>"CN")),L9*62.5+M9*62.5,IF(AND(ISNUMBER(FIND(O9,"20G/20H (L)40G/40H (L)")),OR(F9="GB",H9="DE")),L9*350+M9*175,IF(AND(ISNUMBER(FIND(O9,"20G/20H (L)40G/40H (L)")),OR(F9<>"GB",H9<>"DE")),L9*175+M9*125,0))))))
ซึ่งจะไม่สามารถใช้กับ Excel 2003 ได้เนื่องจากมีการซ้อนฟังก์ชั่นต่าง ๆ รวมกันแล้วเกิน 7 ชั้น

หากจำเป็นต้องใช้กับ 2003 ให้ลองหาทางคำนวณแบบแยกเซลล์ โดยหาค่าสำหรับ L9, M9, O9 แยกออกมาต่างหาก U9 จะนำ 3 เซลล์นั้นมาเป็นผลลัพธ์อีกทีหรือหันไปใช้ VBA แทนครับ