ฟังก์ชัน IF คือสูตรที่ซ้อนกันและการหลีกเลี่ยงข้อผิดพลาด

นำไปใช้กับ
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2016 Excel Web App Excel สำหรับ Windows Phone 10

ฟังก์ชัน IF ช่วยให้คุณสามารถทำการเปรียบเทียบตรรกะระหว่างค่าและสิ่งที่คุณคาดหวังไว้ โดยการทดสอบเงื่อนไข และส่งกลับผลลัพธ์ถ้าเป็น True หรือ False

  • =IF(ถ้ามีบางอย่างเป็น True ให้ดำเนินการอย่างหนึ่ง ถ้าไม่มี ให้ดำเนินการอีกอย่างหนึ่ง)

ดังนั้นข้อความ IF สามารถให้ผลลัพธ์ได้ 2 แบบ ผลลัพธ์แรกคือ ถ้าการเปรียบเทียบของคุณเป็นจริง ผลลัพธ์ที่สองจะเป็นเท็จ

คําสั่ง IF มีประสิทธิภาพอย่างมาก และสร้างพื้นฐานของรูปแบบสเปรดชีตจํานวนมาก แต่ก็ยังเป็นสาเหตุของปัญหาสเปรดชีตมากมาย โดยปกติ คําสั่ง IF ควรนําไปใช้กับเงื่อนไขที่น้อยที่สุด เช่น ชาย/หญิง ใช่/ไม่ใช่/ไม่แน่ แต่บางครั้ง คุณอาจต้องประเมินสถานการณ์ที่ซับซ้อนกว่าที่ต้องการใช้การซ้อนทับ* มากกว่าฟังก์ชัน IF 3 ฟังก์ชันรวมกัน

* "การซ้อนทับ" หมายถึงหลักปฏิบัติของฟังก์ชันหลายฟังก์ชันรวมกันในสูตรเดียว

รายละเอียดด้านเทคนิค

ใช้ฟังก์ชัน IF ซึ่งเป็นหนึ่งใน ฟังก์ชันทางตรรกะ เพื่อส่งกลับหนึ่งค่าถ้าเงื่อนไขเป็น จริง และอีกค่าหนึ่งถ้าเงื่อนไขเป็น เท็จ

ไวยากรณ์

IF(logical_test, value_if_true, [value_if_false])

ตัวอย่างเช่น

  • =IF(A2>B2,"เกินงบ","ตกลง")
  • =IF(A2=B2,B4-A4,"")
ชื่ออาร์กิวเมนต์ คำอธิบาย
logical_test
(จำเป็น)
เงื่อนไขที่คุณต้องการทดสอบ
Value_if_true
(จำเป็น)
ค่าที่คุณต้องการให้ส่งกลับถ้าผลลัพธ์ของ logical_test เป็น TRUE
value_if_false
(ไม่จำเป็น)
ค่าที่คุณต้องการให้ส่งกลับถ้าผลลัพธ์ของ logical_test เป็น FALSE

ข้อสังเกต

แม้ว่า Excel จะเปิดโอกาสให้คุณซ้อนฟังก์ชัน IF ที่แตกต่างกันได้ถึง 64 ชั้น แต่เราไม่แนะนําให้ทํา เพราะเหตุใด

  • คําสั่ง IF ต้องใช้ความคิดที่รอบคอบเป็นอย่างมากเพื่อสร้างฟังก์ชันเหล่านั้นให้ถูกต้อง และตรวจสอบให้แน่ใจว่าตรรกะเหล่านั้นสามารถคํานวณตามเงื่อนไขแต่ละข้อได้ถูกต้องทุกข้อไปจนถึงข้อสุดท้าย ถ้าคุณไม่ซ้อนสูตร ให้มีความแม่นยํา 100% สูตรอาจมีโอกาสคํานวณสําเร็จ 75% แต่มีโอกาสส่งผลลัพธ์ที่ไม่คาดคิด 25% น่าเสียดายที่โอกาสที่คุณจะจับ 25% นั้นน้อยมาก
  • คำสั่ง IF หลายรายการอาจทำให้การคำนวณเป็นเรื่องยากอย่างคาดไม่ถึง โดยเฉพาะเมื่อคุณย้อนกลับมาดูในภายหลังและพยายามทำความเข้าใจสิ่งที่คุณ หรืออาจเป็นคนอื่นพยายามทำ

ถ้าคุณพบคําสั่ง IF ที่ดูเหมือนไม่มีจุดสิ้นสุด คุณควรปล่อยเมาส์แล้ววางแผนกลยุทธ์ของคุณใหม่

มาดูวิธีการสร้างคําสั่ง IF แบบซ้อนทับที่ซับซ้อนโดยใช้คําสั่ง IF หลายคําสั่ง และเวลาที่ควรใช้เครื่องมืออื่นใน Excel ของคุณ

ตัวอย่าง

ต่อไปนี้คือตัวอย่างของคำสั่ง IF แบบซ้อนทับมาตรฐานเพื่อแปลงคะแนนสอบของนักเรียนให้เป็นเกรดที่เป็นตัวอักษร

คําสั่ง IF แบบซ้อนทับที่ซับซ้อน - สูตรใน E2 คือ =IF(B2>97,A+,IF(B2>93,A,IF(B2>89,A-,IF(B2>87,B+,IF(B2>83,B,IF(B2>79,B-,IF(B2>77,C+,IF(B2>73,C,IF(B2>69,C-,IF(B2>57,D+,IF(B2>53,D,IF(B2>49,D-, F))))))))))))

  • =IF(D2>89,"A",IF(D2>79,"B",IF(D2>69,"C",IF(D2>59,"D","F"))))
    คำสั่ง IF ที่ซ้อนกันอย่างซับซ้อนนี้ทำตามหลักตรรกะอย่างตรงไปตรงมา:
  1. ถ้าคะแนนสอบ (ในเซลล์ D2) มากกว่า 89 นักเรียนจะได้ A
  2. ถ้าคะแนนสอบมากกว่า 79 นักเรียนจะได้ B
  3. ถ้าคะแนนสอบมากกว่า 69 นักเรียนจะได้ C
  4. ถ้าคะแนนสอบมากกว่า 59 นักเรียนจะได้ D
  5. มิฉะนั้น นักเรียนจะได้ F

ตัวอย่างนี้ค่อนข้างปลอดภัยเนื่องจากไม่น่าเป็นไปได้ที่ความสัมพันธ์ระหว่างคะแนนสอบและเกรดที่เป็นตัวอักษรจะเปลี่ยนแปลง ดังนั้นจึงไม่ต้องการการบํารุงรักษามาก แต่นี่คือความคิด – จะเกิดอะไรขึ้นถ้าคุณต้องการแบ่งเกรดระหว่าง A+, A และ A- (และอื่นๆ)? คําสั่ง IF สี่เงื่อนไขของคุณจะต้องถูกเขียนใหม่ให้มี 12 เงื่อนไข! ในตอนนี้ สูตรของคุณจะมีลักษณะดังนี้:

  • =IF(B2>97,"A+",IF(B2>93,"A",IF(B2>89,"A-",IF(B2>87,"B+",IF(B2>83,"B",IF(B2>79,"B-", IF(B2>77,"C+",IF(B2>73,"C",IF(B2>69,"C-",IF(B2>57,"D+",IF(B2>53,"D",IF(B2>49,"D-","F"))))))))))))

สูตรจะยังคงทํางานอย่างแม่นยําและจะทํางานตามที่คาดไว้ แต่ใช้เวลานานในการเขียนและใช้เวลานานยิ่งกว่าในการทดสอบเพื่อให้แน่ใจว่าทํางานได้ตามที่คุณต้องการ ปัญหาที่ชัดเจนอีกประการหนึ่งคือคุณต้องใส่คะแนนและเกรดที่เป็นตัวอักษรด้วยตนเอง สงสัยว่าคุณมีโอกาสที่จะพิมพ์ผิดโดยไม่ได้ตั้งใจเท่าไร ตอนนี้ ลองนึกภาพการทําสิ่งนี้ 64 ครั้งกับเงื่อนไขที่ซับซ้อนมากขึ้น! แน่นอนว่ามันเป็นไปได้ แต่คุณต้องการให้ตัวเองตกอยู่ภายใต้ความพยายามและข้อผิดพลาดที่เป็นไปได้ที่ตรวจพบได้ยากจริงๆหรือไม่?

เคล็ดลับ

ทุกฟังก์ชันใน Excel ต้องมีวงเล็บเปิดและปิด () Excel จะพยามยามช่วยคุณแยกแยะโดยการใส่สีให้กับส่วนต่างๆ ของสูตรเมื่อคุณแก้ไข ตัวอย่างเช่น ถ้าคุณแก้ไขสูตรด้านบน เมื่อคุณย้ายเคอร์เซอร์ผ่านแต่ละวงเล็บปิด ")" วงเล็บเปิดที่สอดคล้องกันจะเปลี่ยนเป็นสีเดียวกัน ซึ่งจะมีประโยชน์อย่างยิ่งในสูตรแบบซ้อนทับที่ซับซ้อน เมื่อคุณพยายามแยกแยะว่าคุณมีวงเล็บที่ตรงกันเพียงพอหรือไม่

ตัวอย่างเพิ่มเติม

ต่อไปนี้คือตัวอย่างทั่วไปของการคำนวณค่าคอมมิชชั่นยอดขายโดยยึดตามระดับความสำเร็จของรายได้

สูตรในเซลล์ D9 คือ IF(C9 15000,20%,IF(C9 12500,17.5%,IF(C9>10000,15%,IF(C9>7500,12.5%,IF(C9>5000,10%,0)))))>>

  • =IF(C9 15000,20%,IF(C9 12500,17.5%,IF(C9>10000,15%,IF(C9>7500,12.5%,IF(C9>5000,10%,0)))))>>

สูตรนี้บอกว่า IF(C9 มากกว่า 15,000 จะส่งกลับ 20%, IF(C9 มากกว่า 12,500 จะส่งกลับ 17.5% และอื่นๆ...

แม้จะมีความคล้ายคลึงกับตัวอย่างเกรดก่อนหน้านี้อย่างมาก สูตรนี้เป็นตัวอย่างที่ดีของความยากลําบากในการจัดการคําสั่ง IF ขนาดใหญ่ คุณจําเป็นต้องทํามากเพียงใดถ้าองค์กรของคุณตัดสินใจเพิ่มระดับการชดเชยใหม่และอาจถึงกับเปลี่ยนแปลงจํานวนเงินหรือค่าเปอร์เซ็นต์ที่มีอยู่ คุณมีงานจํานวนมากที่ต้องทําแน่นอน!

เคล็ดลับ

คุณสามารถแทรกตัวแบ่งบรรทัดในแถบสูตรเพื่อทําให้อ่านสูตรที่ยาวได้ง่ายขึ้น เพียงกด ALT+ENTER ก่อนข้อความที่คุณต้องการตัดไปยังบรรทัดใหม่

นี่คือตัวอย่างของสถานการณ์ค่าคอมมิชชั่นที่มีการหยุดใช้งาน:

สูตรใน D9 ที่หยุดใช้งานคือ =IF(C9>5000,10%,IF(C9>7500,12.5%,IF(C9>10000,15%,IF(C9>12500,17.5%,IF(C9>15000,20%,0))))) คุณเห็นไหมว่ามีอะไรผิดปกติ เปรียบเทียบลําดับของการเปรียบเทียบรายได้กับตัวอย่างก่อนหน้า อันนี้ไปทางไหน? ถูกต้อง มันกําลังจากล่างขึ้นบน (5,000 ดอลลาร์ถึง 15,000 ดอลลาร์) ไม่ใช่ในทางกลับกัน แต่ทําไมถึงเป็นเรื่องใหญ่ขนาดนี้? เป็นเรื่องใหญ่เพราะสูตรไม่สามารถผ่านการประเมินครั้งแรกสําหรับค่าใดๆ ที่เกิน $5,000 ได้ สมมติว่าคุณมีรายได้ $12,500 คําสั่ง IF จะส่งกลับ 10% เนื่องจากมากกว่า $5,000 และจะหยุดตรงนั้น สิ่งนี้อาจเป็นปัญหาอย่างไม่น่าเชื่อ เพราะในหลายๆ สถานการณ์ ข้อผิดพลาดประเภทนี้จะไม่ถูกสังเกตเห็นจนกว่าจะส่งผลเสีย ดังนั้นเมื่อรู้ว่ามีข้อผิดพลาดร้ายแรงบางอย่างกับคําสั่ง IF แบบซ้อนทับที่ซับซ้อน คุณจะทําอะไรได้บ้าง ในกรณีส่วนใหญ่ คุณสามารถใช้ฟังก์ชัน VLOOKUP แทนการสร้างสูตรที่ซับซ้อนด้วยฟังก์ชัน IF เมื่อใช้ VLOOKUP คุณต้องสร้างตารางอ้างอิงก่อน:

สูตรในเซลล์ D2 คือ =VLOOKUP(C2,C5:D17,2,TRUE)

  • =VLOOKUP(C2,C5:D17,2,TRUE)

สูตรนี้ระบุให้ค้นหาค่าใน C2 ในช่วง C5:C17 ถ้าพบค่า จะส่งกลับค่าที่สอดคล้องกันจากแถวเดียวกันในคอลัมน์ D

สูตรในเซลล์ C9 คือ =VLOOKUP(B9,B2:C6,2,TRUE)

  • =VLOOKUP(B9,B2:C6,2,TRUE)

ในทํานองเดียวกัน สูตรนี้จะค้นหาค่าในเซลล์ B9 ในช่วง B2:B22 ถ้าพบค่า จะส่งกลับค่าที่สอดคล้องกันจากแถวเดียวกันในคอลัมน์ C

หมายเหตุ

VLOOKUP ทั้งสองรายการเหล่านี้ใช้อาร์กิวเมนต์ TRUE ที่จุดสิ้นสุดของสูตร หมายความว่าเราต้องการให้ค้นหาค่าที่ตรงกันโดยประมาณ กล่าวอีกนัยหนึ่ง แอปจะจับคู่ค่าในตารางค้นหา และค่าใดก็ตามที่อยู่ระหว่างนั้น ในกรณีนี้ตารางค้นหาต้องถูกจัดเรียงตามลําดับจากน้อยไปหามาก

VLOOKUP จะครอบคลุมรายละเอียดเพิ่มเติม ที่นี่ แต่แน่นอนว่าจะง่ายกว่าคําสั่ง IF แบบซ้อนทับที่ซับซ้อน 12 ระดับมาก! และยังมีประโยชน์อื่นๆ อีกด้วย:

  • ตารางอ้างอิง VLOOKUP อยู่ในที่ที่มองเห็นได้ง่ายและดูได้ง่าย
  • ค่าในตารางจะถูกอัปเดตได้อย่างง่ายดายและคุณไม่จำเป็นต้องยุ่งกับสูตรอีกเลย ถ้าเงื่อนไขของคุณไม่เปลี่ยนแปลง
  • ถ้าคุณไม่ต้องการให้ผู้อื่นเห็นหรือยุ่งกับตารางอ้างอิงของคุณ ให้ใส่บนเวิร์กชีตอื่น

คุณทราบหรือไม่

ขณะนี้มี ฟังก์ชัน IFS ที่สามารถแทนที่คําสั่ง IF หลายคําสั่งที่ซ้อนกันด้วยฟังก์ชันเดียว ดังนั้นแทนที่จะเป็นตัวอย่างเกรดเริ่มต้นของเราซึ่งมีฟังก์ชัน IF ที่ซ้อนกัน 4 ฟังก์ชัน:

  • =IF(D2>89,"A",IF(D2>79,"B",IF(D2>69,"C",IF(D2>59,"D","F"))))

ซึ่งทำได้ง่ายด้วยฟังก์ชัน IFS เพียงฟังก์ชันเดียว

  • =IFS(D2>89,"A",D2>79,"B",D2>69,"C",D2>59,"D",TRUE,"F")

ฟังก์ชัน IFS มีประโยชน์มากเนื่องจากคุณไม่ต้องกังวลเกี่ยวกับคําสั่ง IF และวงเล็บเหล่านั้นทั้งหมด

หมายเหตุ

ฟีเจอร์นี้จะพร้อมใช้งานถ้าคุณมี การสมัครใช้งาน Microsoft 365 เท่านั้น ถ้าคุณเป็นผู้สมัครใช้งาน Microsoft 365 ตรวจสอบให้แน่ใจว่าคุณมี Office เวอร์ชันล่าสุด

ต้องการความช่วยเหลือเพิ่มเติมไหม

คุณสามารถสอบถามผู้เชี่ยวชาญใน ชุมชนด้านเทคนิคของ Excel หรือรับการสนับสนุนใน ชุมชนได้เสมอ