จากภาพนี้โจทย์กำหนดให้หาว่า 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.