🧐 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( คะแนนที่สอบได้>=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 มาก่อนครับ