ซ่อมคอมพิวเตอร์นอกสถานที่ บางกะปิ รามคำแหง

วันพุธที่ 18 กรกฎาคม พ.ศ. 2555

Microsoft Excel Tips and Tricks: เราจะซ้อน 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 เป็นต้น

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

แสดงความคิดเห็น