สูตร IF หลายเงื่อนไขใน Excel: IF ซ้อน, IFS, AND, OR พร้อมตัวอย่าง
· อ่านประมาณ 10 นาที
สูตร IF คือสูตรที่ทำให้ Excel "ตัดสินใจ" แทนเราได้ เช่น ผ่านหรือไม่ผ่าน ได้โบนัสหรือไม่ ค้างชำระหรือยัง เมื่องานซับซ้อนขึ้นจนต้องใช้หลายเงื่อนไข หลายคนเขียน IF ซ้อนกันจนอ่านไม่ออก บทความนี้สอนใช้ IF หลายเงื่อนไข ทั้งแบบ IF ซ้อน (Nested IF), IFS, AND, OR และทางเลือกที่ทำให้สูตรสั้นและแก้ไขง่ายกว่าเดิม
โครงสร้างสูตร IF
=IF(logical_test, value_if_true, value_if_false)
logical_testเงื่อนไขที่ต้องการตรวจ เช่นB2>=50value_if_trueผลลัพธ์เมื่อเงื่อนไขเป็นจริงvalue_if_falseผลลัพธ์เมื่อเงื่อนไขเป็นเท็จ
=IF(B2>=50, "ผ่าน", "ไม่ผ่าน")
ข้อความต้องอยู่ในเครื่องหมายคำพูด "..." ส่วนตัวเลขและสูตรไม่ต้องใส่ เช่น =IF(C2>100000, C2*5%, 0) คิดโบนัส 5% เมื่อยอดขายเกิน 100,000 บาท
เครื่องหมายเปรียบเทียบที่ใช้ในเงื่อนไข
| เครื่องหมาย | ความหมาย | ตัวอย่าง |
|---|---|---|
= | เท่ากับ | C2="บัญชี" |
<> | ไม่เท่ากับ | C2<>"บัญชี" |
> / < | มากกว่า / น้อยกว่า | B2>100 |
>= / <= | มากกว่าหรือเท่ากับ / น้อยกว่าหรือเท่ากับ | B2<=TODAY() |
IF หลายเงื่อนไขแบบ "และ" ด้วย AND
ใช้เมื่อต้องการให้ทุกเงื่อนไขเป็นจริง เช่น ผ่านการอบรมเมื่อคะแนนสอบตั้งแต่ 60 และ เข้าเรียนครบ 80%
=IF(AND(B2>=60, C2>=80%), "ผ่าน", "ไม่ผ่าน")
IF หลายเงื่อนไขแบบ "หรือ" ด้วย OR
ใช้เมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริงก็พอ เช่น ได้สิทธิ์ส่วนลดถ้าเป็นสมาชิก หรือ ซื้อตั้งแต่ 3,000 บาท
=IF(OR(D2="สมาชิก", E2>=3000), "ได้ส่วนลด", "-")
ใช้ AND กับ OR ร่วมกันได้ เช่น =IF(AND(B2="ขาย", OR(C2>=100000, D2>=50)), "ได้โบนัส", "") คือ พนักงานฝ่ายขายที่ยอดขายถึง 100,000 หรือปิดได้ 50 บิล
IF ซ้อนกัน (Nested IF) สำหรับหลายระดับ
เมื่อผลลัพธ์มีมากกว่า 2 แบบ เช่น ตัดเกรด A, B, C, D ต้องใส่ IF ไว้ในช่อง value_if_false ของ IF ก่อนหน้า
=IF(B2>=80, "A", IF(B2>=70, "B", IF(B2>=60, "C", "D")))
ข้อควรระวัง: ต้องเรียงเงื่อนไขจากค่ามากไปน้อย (เมื่อใช้ >=) ถ้าเขียน B2>=60 ไว้ก่อน คนที่ได้ 90 คะแนนจะได้ C เพราะ Excel หยุดที่เงื่อนไขแรกที่เป็นจริง และต้องปิดวงเล็บให้ครบตามจำนวน IF
IFS: เขียนหลายเงื่อนไขแบบไม่ต้องซ้อน
ใน Excel 2019 ขึ้นไปและ Microsoft 365 ใช้ IFS แทน IF ซ้อนได้ อ่านง่ายกว่ามาก
=IFS(B2>=80, "A", B2>=70, "B", B2>=60, "C", TRUE, "D")
ใส่เป็นคู่ "เงื่อนไข, ผลลัพธ์" ไปเรื่อย ๆ และคู่สุดท้ายใช้ TRUE เป็น "กรณีอื่นทั้งหมด" ถ้าไม่ใส่ แล้วไม่มีเงื่อนไขใดเป็นจริง จะได้ #N/A
SWITCH: เมื่อเทียบค่าตรงตัวหลายค่า
ถ้าเงื่อนไขเป็นการเทียบค่าเดียวกับหลายตัวเลือก เช่น แปลงรหัสแผนกเป็นชื่อ ใช้ SWITCH (Excel 2019 ขึ้นไป)
=SWITCH(C2, "ACC", "บัญชี", "HR", "บุคคล", "SAL", "ขาย", "อื่น ๆ")
ตัวอย่าง IF ที่ใช้บ่อยในงานจริง
1. ไม่แสดงผลเมื่อเซลล์ว่าง
=IF(B2="", "", B2*C2)
ถ้ายังไม่กรอกจำนวน ให้เว้นว่างแทนการแสดง 0 ทำให้ฟอร์มดูสะอาด
2. ตรวจสถานะค้างชำระ
=IF(AND(D2="", C2<TODAY()), "เกินกำหนด", IF(D2="", "รอชำระ", "ชำระแล้ว"))
C2 คือวันครบกำหนด D2 คือวันที่รับเงิน ถ้ายังไม่รับเงินและเลยกำหนดแล้วจะแสดง "เกินกำหนด"
3. ตรวจว่าข้อความมีคำที่ต้องการไหม
=IF(ISNUMBER(SEARCH("ด่วน", B2)), "งานด่วน", "ปกติ")
IF ปกติใช้ Wildcard * ไม่ได้ ต้องใช้ SEARCH หาคำ แล้วใช้ ISNUMBER ตรวจว่าเจอหรือไม่
4. ใช้ IF ร่วมกับ COUNTIF ตรวจข้อมูลซ้ำ
=IF(COUNTIF($A$2:$A$500, A2)>1, "ซ้ำ", "")
ใช้ตรวจรหัสพนักงานหรือเลขที่ใบแจ้งหนี้ที่กรอกซ้ำ
เมื่อไรไม่ควรใช้ IF ซ้อน
ถ้าเงื่อนไขเป็น "ขั้นบันได" ที่อาจเปลี่ยนในอนาคต เช่น อัตราค่าคอมมิชชัน ขั้นภาษี หรือส่วนลดตามยอดซื้อ ไม่ควรเขียนตัวเลขฝังไว้ในสูตร IF เพราะเมื่อนโยบายเปลี่ยนต้องตามแก้สูตรทุกเซลล์
ทางที่ดีกว่าคือทำตารางอัตราแยกไว้ แล้วใช้ XLOOKUP แบบ match_mode -1 ดึงอัตราที่ตรงขั้น เมื่อนโยบายเปลี่ยนก็แก้แค่ตาราง
=XLOOKUP(C2, อัตรา!A2:A6, อัตรา!B2:B6, , -1)
ปัญหาที่พบบ่อย
- #NAME? ลืมใส่เครื่องหมายคำพูดครอบข้อความ เช่น
=IF(B2=ผ่าน, ...)ต้องเป็น"ผ่าน"หรือใช้ IFS/SWITCH ใน Excel 2016 ที่ไม่มีฟังก์ชันนี้ - ผลลัพธ์ผิดทุกแถว มักเกิดจากเรียงเงื่อนไขผิดลำดับ หรือเปรียบเทียบตัวเลขที่ถูกเก็บเป็นข้อความ
- ใส่ตัวเลขในเครื่องหมายคำพูด เช่น
"0"จะได้ข้อความ "0" ไม่ใช่ตัวเลข ทำให้ SUM ไม่รวมค่านั้น - Formula has too many arguments ปิดวงเล็บไม่ครบหรือผิดตำแหน่ง ลองใช้ IFS แทนเพื่อลดจำนวนวงเล็บ
คำถามที่พบบ่อย
IF ซ้อนได้กี่ชั้น
Excel 2007 ขึ้นไปซ้อนได้สูงสุด 64 ชั้น แต่ในทางปฏิบัติถ้าเกิน 3–4 ชั้นควรเปลี่ยนไปใช้ IFS หรือตารางอ้างอิงร่วมกับ XLOOKUP
IFS กับ IF ซ้อน ต่างกันไหม
ผลลัพธ์เหมือนกัน แต่ IFS อ่านง่ายกว่าและไม่ต้องนับวงเล็บ ข้อเสียคือใช้ได้เฉพาะ Excel 2019 ขึ้นไป ถ้าส่งไฟล์ให้คนใช้ Excel 2016 ควรใช้ IF ซ้อน
สรุป
ใช้ IF สำหรับ 2 ทางเลือก ใช้ AND / OR เมื่อมีหลายเงื่อนไข ใช้ IFS เมื่อมีหลายระดับ และใช้ตารางอ้างอิงกับ XLOOKUP เมื่อเงื่อนไขเป็นขั้นบันไดที่อาจเปลี่ยน แค่นี้สูตรของคุณจะสั้น อ่านง่าย และแก้ไขได้โดยคนอื่นในทีม
สูตรตรรกะ IF, IFS และ Nested IF เป็นหัวข้อแรกของหลักสูตรอบรม Excel Advance ถ้ายังไม่คล่องสูตรพื้นฐาน อ่าน20 สูตร Excel พื้นฐาน หรือเริ่มที่Excel Basic สำหรับองค์กรที่ต้องการให้วิทยากรสอน Excel กับงานของทีมโดยตรง ดูรายละเอียดอบรม In-house
- #สูตร IF
- #IFS
- #IF หลายเงื่อนไข
- #สูตร Excel
- #Excel Advance