Excel ตั้งแต่เวอร์ชั่น 2003 ลงไปสามารถซ้อน IF ได้แค่ 7 ชั้นซึ่งบางคนก็อยากได้มากกว่านั้น Excel 2007 จึงให้มาถึง 64 ชั้น และคิดว่าน่าจะเพียงพอแก่การงง
และแม้ว่า Excel 2003 จะสามารถซ้อน IF ได้แค่ 7 ชั้นก็ตาม เรายังสามารถประยุกต์ให้สามารถซ้อนได้เกิน 7 ชั้นได้อย่างไม่ลำบาก แค่เพียงเราเข้าใจสิ่งเหล่านี้ก่อน ซึ่งขอยกมาเป็นเพียงตัวอย่างคือ
- True+0 = 1
- False+0 = 0
- การใช้ &
ข้อ 1. และ 2. เพิ่งรู้ใช่ไหมล่ะ อืม...ขอถามกันก่อนว่า แล้วเราจะใช้ IF เกิน 7 ชั้นไปทำไม เลือกคำตอบมา 1 ข้อ คิดไว้ในใจคนเดียว
- บ้าพลัง
- อยากเอาชนะข้อจำกัดของ IF
- เราถนัดและยังไม่รู้ว่ามีฟังก์ชั่นไหนที่เหมาะกว่า ซึ่งเราต้องใช้ด่วน ไม่อยากคิดฟังก์ชั่นอื่น ได้โปรดอย่าถามอีก ขอร้องเถอะ เห็นแก่ลูกแมวตาขาวๆ
ก่อนที่จะถูกหมั่นไส้ไปกว่านี้ ขอพาไปทัศนาว่าเราจะใช้ 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 เงื่อนไข
คำถาม จะเขียนฟังก์ชั่น IF ที่ B1 อย่างไร?
เราสังเกตเห็นอะไรบ้างครับกับโจทย์นี้ ส่วนตัวผมเองสังเกตเห็นดังนี้
- เงื่อนไขเป็นตัวเลข
- เงื่อนไขเกินกว่า 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 ทดลองคีย์เลขใดๆ แล้วสังเกตดูผลลัพธ์
เราเห็นอะไรจากสูตรนี้บ้าง
- เงื่อนไขสุดท้ายเป็น 0 เราไม่ต้องคีย์
- 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 เงื่อนไข (แน่ะ...มีการแถม)
คำถาม จะเขียนฟังก์ชั่น IF ที่ B1 อย่างไร?
คำตอบ ที่ 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",""))
เราสังเกตเห็นอะไรบ้างจากสูตรนี้
- เมื่อเป็น Text เงื่อนไขสุดท้ายต้องให้คืนค่าเป็นค่าว่าง ("")
- การเชื่อมให้เกินกว่า 7 ชั้นใช้ &
อ้อ...เป็นอย่างนี้นี่เอง
ลองประยุกต์สัก 20 หรือ 30 เงื่อนไขดูครับว่า จะใช้ IF อย่างไร ซึ่งผมแนะนำว่าหากเงื่อนไขหลายๆ ชั้นควรใช้ฟังก์ชั่นอื่นที่เหมาะสมกว่ามาแก้ปัญหาครับ เช่น Lookup, Vlookup, Index+Match เป็นต้น