การใช้ if ifs ใน excel

การใช้ 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

ง่าย ๆ แบบนี้เองจ้ะ สาธุชน

การใช้ if

แต่ถ้ามีเงื่อนไขมากกว่า 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))))

การใช้ if ซ้อน if

การใช้ 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,”สู้สู้นะ”)

ก็หวังว่าจะเป็นประโยชน์กับท่านทั้งหลายตามสมควร

Tags:, ,

ความคิดเห็นของคุณ :)

%d bloggers like this: