13 October 2025

เคล็ดการสร้างสูตร IF ซ้อน IF "ต้องเปิดโอกาสให้ IF ทุกตัวได้ทำงาน


จากภาพนี้โจทย์กำหนดให้หาว่า MyPoint ที่สอบได้ 75 คะแนน ได้เกรดอะไร ซึ่งตอบว่าได้เกรด B

โดยมีเงื่อนไขในการตัดเกรด ตามตาราง GradeTbl ซ้ายมือ
ถ้าสอบได้ตั้งแต่ 0 คะแนนขึ้นไป ได้เกรด C
ถ้าสอบได้ตั้งแต่ 70 คะแนนขึ้นไป ได้เกรด B
ถ้าสอบได้ตั้งแต่ 90 คะแนนขึ้นไป ได้เกรด A

สูตร IF ที่ใช้ในการตัดเกรด อยู่ในเซลล์สีเขียว โดย MyPoint เป็นคะแนนที่สอบได้ 75 คะแนน
=IF( MyPoint>=B7, C7, IF( MyPoint>=B6, C6, C5))

ถ้าแกะค่าดูว่า B6 B7 C5 C6 C7 คือค่าอะไร
=IF( MyPoint>=90, "A", IF( MyPoint>=70, "B", "C"))

มองลำดับสูตรจากซ้ายไปขวา ทำไมสูตร IF ที่ซ้อนกันนี้ จึงเทียบ MyPoint>=90 ขึ้นมาก่อนแล้วจึงตามด้วย MyPoint>=70

และที่สำคัญ ทำไมจึงไม่เทียบ MyPoint>=0 ขึ้นก่อนสุดล่ะ

สาเหตุก็เพราะ "ต้องเปิดโอกาสให้ IF ทุกตัวได้ทำงาน" ครับ

ถ้าเอา >=0 ขึ้นก่อน จะปิดโอกาสไม่ให้เงื่อนไขอื่นทำงานได้เลย เพราะค่าที่มากกว่าหรือเท่ากับ 0 นั้น หมายถึงทั้ง 70 และ 90 ด้วย

เพื่อเปิดโอกาสให้ IF ทุกตัวได้ทำงาน จึงต้องไล่สูตร IF ให้ตรวจสอบเงื่อนไขตามลำดับนี้

MyPoint>=90 ได้เกรด A แต่ถ้าไม่ใช่จึงเทียบ MyPoint>=70 ได้เกรด B แต่ถ้าไม่ใช่อีกจึงให้ C ไปเป็นทางออกสุดท้าย โดยไม่จำเป็นต้องซ้อน IF เพิ่มอีกตัวเข้าไปอีก

☝️ "ต้องเปิดโอกาสให้ IF ทุกตัวได้ทำงาน"

พอใช้หลักการนี้เป็นแล้ว สูตร IF จะสั้นลง จากเดิมที่จัดลำดับไม่เป็นต้องพึ่งสูตร And มาช่วยควบคุมแต่ละช่วง ซึ่งไม่จำเป็นแม้แต่น้อย

=IF( AND(MyPoint>=B5, MyPoint<B6), C5, IF( AND(MyPoint>=B6, MyPoint<B7), C6, C7))

++++++++++++++++++++++++++ 

ถ้ารู้จักสูตร VLookup สูตรจะสั้นลงเหลือเพียง
=VLOOKUP( MyPoint, GradeTBL, 2)

แต่จะใช้ได้ต่อเมื่อโครงสร้างตาราง GradeTBL นั้นเรียงคะแนนจากน้อยไปมากและข้อมูลคะแนนกับเกรดอยู่ในพื้นที่ติดกันเท่านั้น

ส่วนสูตร IF ไม่ต้องห่วงว่าค่าจะกรอกเอาไว้ที่ไหน ยังทำงานได้ตามเดิมเสมอ

Download ตัวอย่างนี้ได้จาก
https://drive.google.com/file/d/12Xt05ZkNL9gA8H9vS5fLM7_CmuJOWT5i/view?usp=sharing

อยากชมคลิปที่ผมอธิบายเรื่องนี้ เชิญดูได้จากหลักสูตร Excel Expert Fast and Easy
https://xlsiam.com/course/excel-expert-fast-and-easy/

ซึ่งเปิดให้สมัครเรียนออนไลน์ ฟรี ที่เว็บ XLSiam.com ครับ 

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.