หน้าเว็บ

วันอาทิตย์ที่ 9 พฤศจิกายน พ.ศ. 2551

เราจะซ้อน IF มากกว่า 7 ชั้นได้อย่างไร?

Excel ตั้งแต่เวอร์ชั่น 2003 ลงไปสามารถซ้อน IF ได้แค่ 7 ชั้นซึ่งบางคนก็อยากได้มากกว่านั้น Excel 2007 จึงให้มาถึง 64 ชั้น และคิดว่าน่าจะเพียงพอแก่การงง Disappointed smile

และแม้ว่า Excel 2003 จะสามารถซ้อน IF ได้แค่ 7 ชั้นก็ตาม เรายังสามารถประยุกต์ให้สามารถซ้อนได้เกิน 7 ชั้นได้อย่างไม่ลำบาก แค่เพียงเราเข้าใจสิ่งเหล่านี้ก่อน ซึ่งขอยกมาเป็นเพียงตัวอย่างคือ

  1. True+0 = 1
  2. False+0 = 0
  3. การใช้ &

ข้อ 1. และ 2. เพิ่งรู้ใช่ไหมล่ะ อืม...ขอถามกันก่อนว่า แล้วเราจะใช้ IF เกิน 7 ชั้นไปทำไม เลือกคำตอบมา 1 ข้อ คิดไว้ในใจคนเดียว

  1. บ้าพลัง
  2. อยากเอาชนะข้อจำกัดของ IF
  3. เราถนัดและยังไม่รู้ว่ามีฟังก์ชั่นไหนที่เหมาะกว่า ซึ่งเราต้องใช้ด่วน ไม่อยากคิดฟังก์ชั่นอื่น ได้โปรดอย่าถามอีก ขอร้องเถอะ เห็นแก่ลูกแมวตาขาวๆ Thinking smile

Smile with tongue out ก่อนที่จะถูกหมั่นไส้ไปกว่านี้ ขอพาไปทัศนาว่าเราจะใช้ IF เกิน 7 ชั้นได้อย่างไร แล้วมันเกี่ยวอะไรกันกับ True, False, &

การที่จะให้เข้าใจอะไรง่ายๆ ก็ต้องมีตัวอย่างประกอบครับ ขอยกตัวอย่างดังนี้

สมมุติโจทย์บอกว่า ถ้า

A1=1 ให้ B1=10
A1=2 ให้ B1=11
A1=3 ให้ B1=12
A1=4 ให้ B1=13
A1=5 ให้ B1=14
A1=6 ให้ B1=15
A1=7 ให้ B1=16
A1=8 ให้ B1=17
A1=9 ให้ B1=18

นอกจากเงื่อนไขข้างบนให้คำตอบเป็น 0 รวมทั้งหมด 10 เงื่อนไข

Sarcastic smile คำถาม จะเขียนฟังก์ชั่น IF ที่ B1 อย่างไร?

เราสังเกตเห็นอะไรบ้างครับกับโจทย์นี้ ส่วนตัวผมเองสังเกตเห็นดังนี้

  1. เงื่อนไขเป็นตัวเลข
  2. เงื่อนไขเกินกว่า 7 ชั้น

ก่อนแก้โจทย์ที่แสนยาก เรามาซ้อมกันก่อนดีกว่า สมมุติตอนนี้ A1 = 2 ที่ B1 คีย์สูตร IF ดังนี้

=If(A1=1,True,False)+0

คำตอบได้เป็นอะไรครับ?

เอาใหม่ ที่ B1 คีย์

=If(A1=1,True)+0 <== โปรดสังเกตว่าเงื่อนไขไม่ครบ

คำตอบได้เป็นอะไรครับ? ==> รู้นะบางคนบอกว่า Excel เพี้ยนไปแล้ว ไม่เป็นไรครับ ถ้า Excel คุณเพี้ยน ของผมก็เพี้ยนเหมือนกัน สบายใจได้ มีเพื่อนแล้ว

เอ้า...มาต่อกัน ดูว่าคนควนจะบอกอะไรต่อ ทดลองแล้ว ได้คำตอบแล้ว งงแล้ว แล้วไงต่อ

ผมกำลังจะบอกว่าเราจะนำตัวอย่างที่ 2 นี่แหละครับ มาทำ IF ให้เกิน 7 ชั้น

ตามข้าพเจ้ามา ที่ B1 เขียนสูตรเพื่อแก้โจทย์ (เอาจริงแล้วนะ) ดังนี้

=IF(A1=1,10,IF(A1=2,11,IF(A1=3,12,IF(A1=4,13,IF(A1=5,14,IF(A1=6,15,IF(A1=7,16,IF(A1=8,17))))))))+IF(A1=9,18)

ที่ A1 ทดลองคีย์เลขใดๆ แล้วสังเกตดูผลลัพธ์

เราเห็นอะไรจากสูตรนี้บ้าง

  1. เงื่อนไขสุดท้ายเป็น 0 เราไม่ต้องคีย์
  2. If ซ้อนได้ 7 ชั้นแต่เรานับแล้วได้ 8 แสดงว่า IF ชั้นนอกสุดไม่นับ

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

โอเค...ได้ ตามใจผู้ชมเสมอ สมมุติโจทย์ใหม่ดังนี้ ถ้า

A1=1 ให้ B1=A
A1=2 ให้ B1=B
A1=3 ให้ B1=C
A1=4 ให้ B1=D
A1=5 ให้ B1=E
A1=6 ให้ B1=F
A1=7 ให้ B1=G
A1=8 ให้ B1=H
A1=9 ให้ B1=I
A1=10 ให้ B1 = J

นอกจากเงื่อนไขข้างบนให้คำตอบเป็น ค่าว่าง รวมทั้งหมด 11 เงื่อนไข (แน่ะ...มีการแถม)

Sarcastic smile คำถาม จะเขียนฟังก์ชั่น IF ที่ B1 อย่างไร?

Winking smile คำตอบ ที่ B1 คีย์

=IF(A1=1,"A",IF(A1=2,"B",IF(A1=3,"C",IF(A1=4,"D",IF(A1=5,"E",IF(A1=6,"F",IF(A1=7,"G",IF(A1=8,"H",""))))))))&IF(A1=9,"I",IF(A1=10,"J",""))

เราสังเกตเห็นอะไรบ้างจากสูตรนี้

  1. เมื่อเป็น Text เงื่อนไขสุดท้ายต้องให้คืนค่าเป็นค่าว่าง ("")
  2. การเชื่อมให้เกินกว่า 7 ชั้นใช้ &

อ้อ...เป็นอย่างนี้นี่เอง I don't know smile

ลองประยุกต์สัก 20 หรือ 30 เงื่อนไขดูครับว่า จะใช้ IF อย่างไร ซึ่งผมแนะนำว่าหากเงื่อนไขหลายๆ ชั้นควรใช้ฟังก์ชั่นอื่นที่เหมาะสมกว่ามาแก้ปัญหาครับ เช่น Lookup, Vlookup, Index+Match เป็นต้น

11 ความคิดเห็น:

๏๏๏๏๏ กล่าวว่า...

ขอบคุณครับบบบบบบบบบบบบบ

snasui กล่าวว่า...

ยินดีครับ

Unknown กล่าวว่า...

ยอดเยี่ยมกระเทียมดองครับ 55555

snasui กล่าวว่า...

:) ขอบคุณครับ

ไม่ระบุชื่อ กล่าวว่า...

แล้วการทำเกมส์Sudokuต้องใช้สูตรอะไรหรอครับ

snasui กล่าวว่า...

ถาม-ตอบปัญหา Excel ได้ที่ http://www.snasui.com/ ครับ

ไม่ระบุชื่อ กล่าวว่า...

ขอบคุณมากๆๆๆๆๆๆเลยนะคะ

cher_ry กล่าวว่า...

รบกวนถามหน่อยค่ะ "ทำเซลล์ให้เป็นสี" โดยการใช้สูตร

1.ถ้าเราใส่คำว่า YES ในคอลัม Q แถว 2 อยากให้แถบสีเหลืองขึ้นที่เซลล์ตั้งแต่ คอลัม A แถว 2 จนถึง คอลัม Q แถว 2 จะทำอย่างไร

2.ถ้าพิมพ์ตัวอักษรอะไรก็ได้ ในคอลัม M แถว 3 อยากให้แถบสีฟ้าขึ้นที่เซลล์ตั้งแต่ คอลัม A แถว 3 จนถึง คอลัม K แถว 3 ทำอย่างไร

snasui กล่าวว่า...

:) ช่วยไปถามที่ http://www.snasui.com/ แนบไฟล์ตัวอย่างไปด้วย เพื่อความสะดวกในการตอบครับ

คนสนใจIT กล่าวว่า...

มีโอกาสได้ลองหลายสูตรแล้วเป็นประโยชน์มากเลยค่ะ แต่ชุดนี้ชัดเจนมากที่สุด ขอบคุณมากเลยค่ะ

snasui กล่าวว่า...

:) อ่านไว้เพื่อเป็นดูแนวคิดนะครับ กรณีเงื่อนไขจำนวนมากเราไม่ใช้ If แต่จะใช้ฟังก์ชั่นจำพวก Lookup แทน

กรณีมีปัญหา Excel สามารถถามได้ที่ http://www.snasui.com ครับ