การใช้ if ใน excel เป็นเรื่องที่ดูเหมือนง่าย เพราะมีแค่ “ใช่” กับ “ไม่ใช่” เท่านั้น ถ้า “ใช่” ก็ไปทำอย่างหนึ่ง ถ้า “ไม่ใช่” ก็ทำอีกแบบหนึ่ง โดยส่วนตัวก็ใช้ฟังก์ชันนี้บ่อยพอสมควรเวลาที่สร้างเงื่อนไขสำหรับคำนวณอย่างใดอย่างหนึ่ง
แต่รู้สึกเหมือนมีคนสับสนเรื่องการจัดการคำสั่ง if พอสมควร โดยเฉพาะต้องถ้าทำคำสั่งประเภท if ซ้อน if แต่ถ้าเข้าใจลักษณะคำสั่งไปทีละสเต็ปก็ไม่ใช่เรื่องยากอะไรเลย ครั้งนี้จึงอยากเขียนถึงฟังก์ชัน if และ ฟังก์ชันใหม่ ifs ที่เพิ่งมีใน excel เวอร์ชัน 2019
การใช้ if
แบบเบสิก
การเขียนสูตร if ง่ายมากคือ
IF(เงื่อนไข, ถ้าใช่ให้ทำอะไร, ไม่ใช่ให้ทำอะไร)
ลองดูตัวอย่าง โจทย์คือ ถ้าช่อง D5 มีค่าเท่ากับ 4 ให้แสดงผลเป็น A ถ้าไม่ใช่ ให้แสดงผลเป็น B
เราให้สูตรแบบนี้
=IF(D5=4, “A”, “B”)
- เงื่อนไข: D5=4 คือเงื่อนไขว่า ถ้า cell D5 มีค่าเท่ากับ 4
- ถ้าใช่ให้ทำอะไร: ให้แสดงผล A
- ถ้าไม่ใช่ให้ทำอะไร: ให้แสดงผล B
ง่าย ๆ แบบนี้เองจ้ะ สาธุชน
แต่ถ้ามีเงื่อนไขมากกว่า 1 ล่ะ เช่น ถ้าช่อง D5 มีค่าเท่ากับ 4 ให้แสดงผลเป็น A ถ้า D5 ,มีค่าเท่ากับ 5 ให้แสดงผลเป็น Z และถ้าไม่ใช่ทั้งคู่ ให้แสดงผลเป็น B
if ซ้อน if
พอเป็น if ซ้อน if ซึ่งอาจจะมีหลายชั้น และมีสูตรการคำนวณที่ซับซ้อนอาจทำให้บางคนหลงทางโดยส่วนตัวจะแนะนำเสมอว่า ถ้าเราลองเขียน flowchart อาจจะทำให้เรามองภาพรวมได้ง่ายขึ้น
สมมติอย่างนี้ ถ้าเราต้องการปัดเศษเลข โดยกำหนดว่า
ถ้าเป็นหลักหน่วยและหลักสิบ – ไม่ปัดเศษ
ถ้าเป็นหลักร้อย – ปัดลงทีละ 10 บาท เช่น 122 จะเป็น 120 ถ้าเป็น 139 จะเป็น 130
ถ้าเป็นหลักพัน – ปัดลงทีละ 100 เช่น 1,250 จะเป็น 1,200 ถ้าเป็น 8,952 จะเป็น 8,900
ถ้าเป็นหลักหมื่นขึ้นไป – ปัดลงทีละ 1000 เช่น 78,945 จะเป็น 78,000 ถ้าเป็น 123,456 จะเป็น 123,000
เอาเงื่อนไขเท่านี้ก่อน ทำพอเป็นพิธี
ดังนั้น เราจะเขียนสูตรที่บอกว่า ถ้าตัวเลขไม่เกิน 2 หลัก (คือไม่เกินหลักสิบ) จะไม่ปัดเศษ แต่ถ้าตัวเลขเป็น 3 หลัก จะปัดเศษลงทีละ 10 ถ้าหลักพัน (เลข 4 หลัก) จะปัดลงทีละ 100 ถ้าหลักหมื่น (ตัวเลข 5 หลักขึ้นไป) ปัดลงทีละ 1,000
มาดูสูตรที่เราจะใช้ในครั้งนี้ อย่างแรก เงื่อนไขการปัดเศษจะขึ้นอยู่กับจำนวนหลักของตัวเลข เราใช้สูตร len เพื่อนับจำนวนหลักของตัวเลข ส่วนการปัดเศษลง มีสองฟังก์ชันที่ใช้ได้ คือ rounddown กับ floor ซึ่งในที่นี้จะใช้ roundown
- ปัดลงทีละ 10 จะได้สูตรเป็น =ROUNDDOWN(ตัวเลข,-1)
- ปัดลงทีละ 100 จะได้สูตรเป็น =ROUNDDOWN(ตัวเลข,-2)
- ปัดลงทีละ 1,000 จะได้สูตรเป็น =ROUNDDOWN(ตัวเลข,-3)
แล้วเราต้องเอาทุกอย่างมาประกอบเข้าด้วยกัน ซึ่งอาจจะดูยุ่งยาก เรามาดู flowchart ประกอบ ว่ามีทิศทางการคิดอย่างไร
ลองคิดด้วย flowchart
เราก็จะได้สูตรดับนี้
1) ถ้าตัวเลขไม่เกิน 2 หลัก (คือไม่เกินหลักสิบ) LEN(ตัวเลข)<=2 จะไม่ปัดเศษ (ใส่ตัวเลขนั้นเลย) ถ้าไม่ใช่ให้ดูกรณีถัดไป
IF(LEN(ตัวเลข)<=2, ตัวเลข, ถ้าไม่ใช่ให้ดูกรณีถัดไป)
2) ถ้าตัวเลขเป็น 3 หลัก LEN(ตัวเลข)=3 จะปัดเศษลงทีละ 10 ROUNDDOWN(ตัวเลข,-1) ถ้าไม่ใช่ให้ดูกรณีถัดไป
IF(LEN(ตัวเลข)=3, ROUNDDOWN(ตัวเลข,-1), ถ้าไม่ใช่ให้ดูกรณีถัดไป)
3) ถ้าตัวเลขเป็น 4 หลัก LEN(ตัวเลข)=4 จะปัดเศษลงทีละ 100 ROUNDDOWN(ตัวเลข,-2) ถ้าไม่ใช่ก็หมายความว่า จำนวนหลักของตัวเลขนี้จะตั้งแต่ 5 หลักขึ้นไป ให้ปัดเศษลงทีละ 1,000 ROUNDDOWN(ตัวเลข,-3)
IF(LEN(ตัวเลข)=4, ROUNDDOWN(ตัวเลข,-2), ROUNDDOWN(ตัวเลข,-3))
สิ่งที่เราต้องทำก็คือ เอาสูตร 3) ไปเติมแทนที่ “ถ้าไม่ใช่ให้ดูกรณีถัดไป” ใน 2) และเอา 2) ไปแทนที่ 1) อีกที
สมมติว่า ตัวเลข อยู่ที่ cell D5 จะได้สูตรยาวเหยียดดังนี้
=IF(LEN(D5)<=2,D5,IF(LEN(D5)=3,ROUNDDOWN(D5,-1),IF(LEN(D5)=4,ROUNDDOWN(D5,-2),ROUNDDOWN(D5,-3))))
การใช้ ifs
ถ้าหากว่า การใช้ if เขียนสูตรซ้อนกันหลายครั้ง ทำให้หลายคนปวดหัว ต้องมานั่งไล่สูตร (อย่างข้างบน) ทางไมโครซอฟต์เลยทำอีกฟังก์ชันหนึ่งมาให้ ตั้งแต่เวอร์ชัน 2019 (หรือในเวอร์ชัน Microsoft 365) เป็นต้นมา นั่นคือ ifs (ดูรายละเอียดที่เว็บของไมโครซอฟต์ได้นะจ๊ะ) โดยมีสูตรการเขียนดังนี้ (เขียนแยกบรรทัดให้เห็นภาพง่ายๆ เวลาเขียนสูตรจริงไม่ต้องขึ้นบรรทัดใหม่)
Ifs( เงื่อนไขแรก, แสดงผลจากเงื่อนไขแรก, เงื่อนไขสอง, แสดงผลจากเงื่อนไขสอง, เงื่อนไขสาม, แสดงผลจากเงื่อนไขสาม, เป็นแบบนี้ไปเรื่อย ๆ )
*ข้อจำกัดของ excel สำหรับฟังก์ชันนี้คือ รับได้ 127 เงื่อนไขเท่านั้น…ว่าแต่ใครจะใช้เยอะขนาดนั้น?
ลักษณะการทำงานไม่ต่างกัน แต่ IFS ง่ายกว่า เพราะแค่จับคู่กำหนดว่า ถ้าตรงตามเงื่อนไขจะเป็นอย่างไร ถ้าใช้โจทย์เดิม เราจะเขียนสูตรได้ดังนี้
=IFS(LEN(D5)<=2,D5,LEN(D5)=3,ROUNDDOWN(D5,-1),LEN(D5)=4,ROUNDDOWN(D5,-2),LEN(D5)>4,ROUNDDOWN(D5,-3))
จะเห็นว่าเขียนง่ายกว่า เวลามาแกะสูตร จะแกะง่ายกว่าเดิมเยอะ เพราะจับเงื่อนไขกันทีละคู่ เพียงแต่ว่าใน ifs จะต้องกำหนดไว้เลยว่า เงื่อนไขเป็นอย่างไร ต่างจาก if ที่จะมีค่าสุดท้ายในสูตรว่าถ้าไม่เข้าเงื่อนไขจะเป็นอย่างไร แต่ใน ifs ต้องกำหนดเงื่อนไขไว้ทั้งหมด
โจทย์ ถ้าสอบได้ 90 คะแนนขึ้นไปได้เกรด A ถ้าสอบได้ 80 คะแนนขึ้นไปได้เกรด B ถ้าสอบได้ 70 คะแนนขึ้นไปได้เกรด C ถ้าสอบได้ 60 คะแนนขึ้นไปได้เกรด D และถ้าสอบได้ต่ำกว่า 60 คะแนนขึ้นไปได้เกรด F
ถ้าเราเขียนสูตรตามโจทย์ จะได้
=IFS(D5>=90,”A”,D5>=80,”B”,D5>=70,”C”,D5>=60,”D”,D5<60,”F”)
หรือ
=IFS(D5<60,”F”,D5<70,”D”,D5<80,”C”,D5<90,”B”,D5>=90,”A”)
ฟังก์ชัน ifs จะมีสูตรให้เขียนจับคู่ระหว่างเงื่อนไขกับแสดงผลตามเงื่อนไขนั้นเท่านั้นก็ตาม ซึ่งสำหรับคนที่ชอบฟังก์ชัน if แบบเดิม อาจจะรู้สึกแปลก เพราะ if แบบเดิมจะมีการกำหนดค่าสำหรับค่าที่เข้าเงื่อนไขต่าง ๆ ไว้ท้ายสุด
แต่เราสามารถเพิ่มค่า TRUE ไว้สำหรับเก็บที่เหลือ (ที่ไม่เข้าเงื่อนไขก่อนหน้านั้น) นั้นได้ เช่น สมมติว่า ถ้าสอบได้ 90 คะแนนขึ้นไปแสดง “เก่งจัง” ถ้าสอบได้ 80 คะแนนขึ้นไป จะได้ “เฉียบ” ถ้าสอบได้ต่ำกว่านั้น ให้ขึ้นว่า “สู้สู้นะ”
ถ้าเป็นแบบนี้เราไม่จำเป็นต้องเขียนทุกตัว เราแค่กำหนดเงื่อนไข 90 คะแนนขึ้น กับ 80 คะแนนขึ้น ก็พอ ส่วนที่ได้แบบอื่น ๆ ให้รวมกันโดยใช้ TRUE กำหนดไปเลยว่าไม่เข้าเงื่อนไขก่อนหน้านั้นให้แสดงคำว่า สู้สู้นะ
=IFS(D5>=90,”เก่งจัง”,D5>=80,”เฉียบ”,TRUE,”สู้สู้นะ”)
ก็หวังว่าจะเป็นประโยชน์กับท่านทั้งหลายตามสมควร
Discover more from Data Revol
Subscribe to get the latest posts sent to your email.