วิธีใช้ IF ซ้อน IF ในการตัดเกรด เพื่อทำให้ Excel ทำงานเร็วที่สุด ... ง่ายที่สุดสำหรับคนสร้างด้วย

🧐  IF ดีกว่า เหนือกว่าสูตร VLookup หรือแม้แต่ XLookup ยังไง

👉 สูตร IF สามารถใช้เงื่อนไขในการตรวจสอบได้ทุกอย่าง ทั้งเท่ากับ มากกว่า น้อยกว่า มากกว่าหรือเท่ากับ น้อยกว่าหรือเท่ากับ หรือไม่เท่ากัน ในขณะที่สูตร VLookup ทำได้แต่เพียงเทียบว่าเท่ากัน หรือน้อยกว่าหรือเท่ากับ ส่วน XLookup เพิ่มมากกว่าหรือเท่ากับให้อีกนิด

สูตร IF สามารถเปรียบเทียบกับเซลล์ที่กระจายกัน ไม่ต้องนำมาติดกันเป็นตารางเพื่อใช้กับ VLookup / XLookup ซึ่งการกระจายตัวนี่แหละ หากมีหลายค่าหลายเงื่อนไขก็จะทำให้ต้องใช้สูตร IF ซ้อน IF กันหลายชั้น ส่งผลทำให้แกะสูตรหรือสร้างสูตรยากขึ้น

ยกตัวอย่างเช่น ในการตัดเกรด
ต้องการให้เกรด A เมื่อสอบได้ตั้งแต่ 90 คะแนนขึ้นไป
ต้องการให้เกรด B เมื่อสอบได้ตั้งแต่ 70 คะแนนขึ้นไป
ส่วนคะแนนที่ต่ำกว่านี้ให้เกรด C

สมัยที่ผมเรียน FORTRAN/COBOL พอเจอเงื่อนไขแบบนี้ก็คิดใช้สูตร And เข้ามาช่วยตัดเกรดทีเดียว เขียนแบบ Excel จะได้สูตรตามนี้

=IF( And(คะแนนที่สอบได้>=0, คะแนนที่สอบได้<70), "C", IF( And(คะแนนที่สอบได้>=70, คะแนนที่สอบได้<90), "B", "A"))

โดย And(คะแนนที่สอบได้>=0, คะแนนที่สอบได้<70) ช่วยตรวจสอบคะแนนที่สอบได้ว่าอยู่ระหว่าง 0 - 69.99 ไหม เพื่อให้ IF ตัดสินเกรด C

And(คะแนนที่สอบได้>=70, คะแนนที่สอบได้<90) ช่วยตรวจสอบคะแนนที่สอบได้ว่าอยู่ระหว่าง 70 - 89.99 ไหม เพื่อให้ IF ตัดสินเกรด B

ถ้าไม่ใช่ทั้งสองช่วงคะแนนนี้ก็ให้เกรด A ไปเลย โดยใช้ IF ซ้อนกันแค่ 2 ชั้น

😎 การเขียนสูตร IF+And แบบนี้เว่อไปครับ ไม่ต้องใช้ And มาช่วยก็ได้ แค่จัดลำดับการตรวจสอบเงื่อนไขให้ดี ตามแบบด้านล่างของภาพนี้

If If

🤩 IF( คะแนนที่สอบได้>=90, "A", IF( คะแนนที่สอบได้>=70, "B", "C"))

สาเหตุที่ต้องใช้ IF ตัวแรกจากซ้ายมือให้ตัดเกรด A ก่อน ไม่ใช่เพราะ A มาก่อน B นะครับ แต่เป็นเพราะใช้สมการ >=

>=90 หมายถึงตั้งแต่ 90 - 100
>=70 หมายถึงตั้งแต่ 70 - 100 แต่เงื่อนไขนี้ถูกเงื่อนไขแรก >=90 จองไปก่อนแล้วตัดเกรด A ให้ไปก่อนแล้ว จึงทำงานได้แค่เพียงคะแนน 70 - 89.99 เท่านั้น

☝️ จำไว้ว่า ลำดับการทำงานของ IF ซ้อน IF จะทำงานทีละ IF จาก IF ตัวนอกสุดก่อน IF ตัวใน ดังนั้นเงื่อนไขที่ใช้ของ IF ตัวนอก ต้องไม่ไปแย่งกับ IF ตัวใน

ถ้าจัดลำดับแบบนี้ จะได้แค่ C ไปทุกช่วงคะแนน
=IF( คะแนนที่สอบได้>=0, "C", IF( คะแนนที่สอบได้>=70, "B", "A"))
เพราะสมการ >=0 ย่อมหมายถึงทุกช่วงคะแนนตั้งแต่ 0 - 100

หากต้องการตัดเกรด C ขึ้นก่อน ต้องแก้สมการ >= เป็น <= แบบนี้แทน
=IF( คะแนนที่สอบได้<=69.99, "C", IF( คะแนนที่สอบได้<=89.99, "B", "A"))

🤔 แล้วจะใช้สมการ >= หรือ <= หรือจะใช้ And มาช่วยดี

ถ้าอยากทำให้ Excel ทำงานเร็วที่สุด ต้องหาทางทำให้ IF ทำงานน้อยตัวที่สุด แค่ผ่าน IF ตัวนอกเข้ามาก็จบไปเลย แล้วไม่ต้องเสียเวลาไปให้ IF ตัวในทำงานต่ออีก

ดังนั้นถ้าเห็นว่าผู้สอบส่วนใหญ่ได้เกรด C ก็ให้เอาเงื่อนไขตัดเกรด C มาก่อนครับ

 

 

Related Articles

© Copyright 1999

สงวนลิขสิทธิ์ตามกฎหมาย

ห้ามนำข้อความหรือส่วนหนึ่งส่วนใดของบทความหรือวิดีโอหรือรูปภาพไปใช้เพื่อการค้าขาย หรือเพื่อประโยชน์ส่วนตัว

อนญาตให้นำไปใช้เพื่อสาธารณประโยชน์โดยขอให้ระบุที่มาและชื่อผู้เขียนกำกับไว้ด้วยเสมอ

ลิงก์เว็บ Excel Expert Training

เว็บสำหรับ เรียนออนไลน์

เว็บสำหรับ เรียนแบบกลุ่ม-ส่วนตัว

ติดตามข่าวสารได้จาก facebook

ถามปัญหาได้ที่ กลุ่มคนรัก Excel

และไลน์กลุ่ม Excel Expert Group

ที่อยู่และการติดต่อ

สมเกียรติ ฟุ้งเกียรติ 7/1 รามคำแหง ซอย 35 หัวหมาก บางกะปิ กทม 10240 โทร 097-140-5555, 02-718-9331

Excel@ExcelExpertTraining.com

sfk234x234