บทความนี้แอดมาสอนเขียนฟังชั่น IF IFS และ XLOOKUP ใน Excel เพื่อสร้างโปรแกรมตัดเกรดนักเรียนง่ายๆ (nested conditions) มีทั้งหมด 6 เกรดตั้งแต่ A-F โดยเกณฑ์การตัดเกรดนักเรียนเป็นดังนี้

ดาวน์โหลดไฟล์ตัวอย่าง Excel สำหรับบทความนี้ได้ที่นี่ ข้อมูลคะแนนนักเรียนอยู่ในคอลัมน์ A ส่วนเกรดที่คำนวณจากฟังชั่น IF IFS และ XLOOKUP อยู่ในคอลัมน์ B C D ตามลำดับ

IF (column B)
มาเริ่มกันที่ฟังชั่นที่มีมานานที่สุดใน Excel คือฟังชั่น IF ที่มี syntax การเขียนง่ายๆแบบนี้ =IF(condition, TRUE, FALSE) ถ้าเราต้องการเขียนเงื่อนไขซ้อนกันหลายๆชั้น ก็สามารถทำได้ด้วยการเขียน nested IF แบบนี้ IF(IF(IF … ))) ซึ่งเป็นวิธีที่เขียนสูตรที่ยุ่งยากและมีโอกาสผิดสูง (i.e. error prone) เราไม่แนะนำให้ใช้เท่าไหร่ ถ้าใครใช้ Excel เวอร์ชั่น 2016 ขึ้นไป แอดแนะนำให้ข้ามไปอ่านวิธีการเขียนฟังชั่น IFS เลย
=IF(A2>=90, "A",
IF(A2>=80, "B",
IF(A2>=70, "C",
IF(A2>=60, "D",
IF(A2>=50, "E", "F")))))
IFS (column C)
สำหรับ Excel 2016/ Office 365 จะมีฟังชั่น IFS ที่เขียน nested IF ได้ง่ายกว่าเดิมมาก =IFS(condition1, output1, condition2, output2, … ) เราสามารถเขียนเงื่อนไขได้หลายข้อ แต่แอดแนะนำว่าไม่ควรเกิน 5-6 ข้อ
ทำไมถึงไม่ควรเขียน IFS เกิน 5-6 ข้อ? เพราะสูตรมันจะยาว ปั๊ดโถ่! ไปใช้ XLOOKUP() ดีกว่า 😛
=IFS(A2>=90, "A",
A2>=80, "B",
A2>=70, "C",
A2>=60, "D",
A2>=50, "E",
A2<50 , "F")
XLOOKUP (column D)
ถ้ามีเงื่อนไขมากกว่า 5-6 ข้อ เช่น ต้องการตัดเกรด A A- B+ B- C+ C- มากกว่าสิบเกรด สร้าง lookup table ตามตัวอย่างด้านล่างและใช้ฟังชั่น XLOOKUP() จะได้ผลลัพธ์ง่ายและเร็วที่สุดเลย เชื่อพี่!

XLOOKUP() มีสาม required arguments อ่านการใช้งานฟังชั่นนี้ได้ในบทความที่แล้วของเรา สำหรับ [if_not_found] ให้เราปล่อยว่างได้เลย และใส่ [match_mode] เท่ากับ -1
อธิบาย [match_mode] = -1 แปลว่า “Exact match or next smaller item” ถ้าคะแนนสอบนักเรียนได้ 65 XLOOKUP จะดึงเกรด D มาแสดงเพราะ 60 < 65 ดังนั้นให้แสดงเกรด D ตาม logic ของ [match_mode]
=XLOOKUP(A2, lookup_table, $G$2:$G$7, , -1)
ทั้งสามฟังชั่น IF IFS และ XLOOKUP จะได้ผลลัพธ์เหมือนกันเลย จะใช้ฟังชั่นไหนก็อยู่ที่ความถนัด (และความชอบ) ของแต่ละคนเลย ส่วนตัวแอดคิดว่า IFS และ XLOOKUP คือฟังชั่นที่มีประสิทธิภาพที่สุดสำหรับงานนี้

อยากเรียนฟังชั่นอะไรอีก? คอมเม้นต์บอกเราได้ใต้โพสต์นี้เลยครับ 😛