Thep Excel

IFS – ทดสอบหลายเงื่อนไขแบบมีลำดับความสำคัญ

IFS ทดสอบหลายเงื่อนไขตามลำดับที่กำหนด และคืนค่าของเงื่อนไขแรกที่เป็น TRUE แล้วหยุดทำงานทันที โครงสร้างเป็นคู่ (เงื่อนไข, ผลลัพธ์) ซ้ำได้สูงสุด 127 คู่ ทำให้อ่านและเขียนง่ายกว่า Nested IF แบบซ้อนชั้น ควรใส่ TRUE เป็นเงื่อนไขสุดท้ายเพื่อกำหนดค่า default ป้องกัน #N/A error มีตั้งแต่ Excel 2019 และ Microsoft 365 เท่านั้น

=IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2], ...)

By ThepExcel AI Agent
18 December 2025

Function Metrics


Popularity
9/10

Difficulty
6/10

Usefulness
9/10

Syntax & Arguments

=IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2], ...)

Argument Type Required Default Description
logical_test1 Logical Yes เงื่อนไขแรกที่ต้องการทดสอบ ต้องให้ผลลัพธ์เป็น TRUE หรือ FALSE เท่านั้น ถ้าเป็น TRUE จะคืนค่า value_if_true1 ทันทีและหยุดการตรวจสอบเงื่อนไขที่เหลือ ใช้ตัวดำเนินการเปรียบเทียบ (>=, <=, =, , ) หรือฟังก์ชันที่คืนค่า logical เช่น AND, OR, ISBLANK, ISNUMBER
value_if_true1 Any Yes ค่าที่จะคืนกลับมาเมื่อ logical_test1 เป็น TRUE สามารถเป็นตัวเลข ข้อความ วันที่ ค่า Boolean สูตรคำนวณ หรือ cell reference ก็ได้ อนุญาตให้เป็นค่าว่าง (empty) ได้ด้วย
logical_test2 Logical Optional เงื่อนไขที่ 2 ที่จะทดสอบต่อ ถ้า logical_test1 เป็น FALSE สามารถเพิ่มเงื่อนไขได้ต่อเนื่องสูงสุด 127 คู่ (logical_test, value_if_true) โดยทดสอบตามลำดับจากซ้ายไปขวา
value_if_true2 Any Optional ค่าที่จะคืนกลับมาเมื่อ logical_test2 เป็น TRUE สามารถเป็นประเภทข้อมูลใดก็ได้เหมือน value_if_true1
Logical/Any Optional สามารถเพิ่มคู่ (logical_test, value_if_true) ได้อีกสูงสุด 125 คู่ รวมเป็น 127 คู่ทั้งหมด แนะนำให้ใส่ TRUE เป็น logical_test สุดท้ายพร้อมค่า default เพื่อป้องกัน #N/A error เมื่อไม่มีเงื่อนไขใดเป็น TRUE

How it works

ระบบตัดเกรดและประเมินผล

ใช้ IFS เพื่อแปลงคะแนนตัวเลข (0-100) เป็นเกรด (A-F) หรือระดับการประเมิน (ดีเยี่ยม, ดี, ปานกลาง, ปรับปรุง) แบบอัตโนมัติ เหมาะกับระบบการศึกษา HR performance review

คำนวณส่วนลดและค่าคอมมิชชั่นแบบขั้นบันได

กำหนดอัตราส่วนลดหรือค่าคอมมิชชั่นที่แตกต่างกันตามยอดซื้อ ยอดขาย หรือปริมาณที่สั่งซื้อ โดยแบ่งเป็นช่วงระดับ (tier) เช่น ซื้อครบ 100,000 ได้ส่วนลด 5%, ครบ 500,000 ได้ 10%

จัดกลุ่มลูกค้าและสินค้าตามเกณฑ์

แบ่งลูกค้าเป็น VIP tier (Diamond, Platinum, Gold, Silver, Bronze) ตามยอดซื้อสะสม หรือจัดหมวดหมู่สินค้าเป็น Premium, Standard, Economy ตามช่วงราคาหรือคุณสมบัติ

ระบบเตือนและแจ้งสถานะอัตโนมัติ

สร้างระบบแจ้งเตือนตามเงื่อนไข เช่น แจ้งสถานะสินค้าคงคลัง (Out of Stock, Low Stock, In Stock, Overstock) หรือสถานะโครงการ (Urgent, High Priority, Normal, Low Priority) ตามข้อมูลที่กำหนด

คำนวณค่าธรรมเนียมและค่าบริการแบบหลายปัจจัย

คำนวณค่าจัดส่ง ค่าธรรมเนียมธนาคาร หรือค่าบริการที่ขึ้นอยู่กับหลายตัวแปร เช่น ระยะทาง น้ำหนัก ประเภทลูกค้า ใช้ IFS ร่วมกับ AND/OR เพื่อรองรับเงื่อนไขที่ซับซ้อน

Examples

ตัวอย่างที่ 1: พื้นฐาน – ตัดเกรดจากคะแนนสอบ
IFS(85>=90, "A", 85>=80, "B", 85>=70, "C", 85>=60, "D", TRUE, "F")
ทดสอบคะแนน 85: เงื่อนไข 85>=90 เป็น FALSE (ข้ามไป) → เงื่อนไข 85>=80 เป็น TRUE → คืนค่า "B" ทันทีและหยุดทำงาน ไม่ทดสอบเงื่อนไข 85>=70, 85>=60 และ TRUE ที่เหลือ
.
การใช้ TRUE เป็นเงื่อนไขสุดท้ายจะทำให้มั่นใจว่า ถ้าไม่ตรงเงื่อนไขใด (เช่น คะแนนต่ำกว่า 60) จะได้เกรด F แทนที่จะเป็น #N/A error 💡
Excel Formula:

=IFS(85>=90, "A", 85>=80, "B", 85>=70, "C", 85>=60, "D", TRUE, "F")

Result:

B

ตัวอย่างที่ 2: การใช้งานจริง – คำนวณค่าคอมมิชชั่นแบบขั้นบันได
IFS(SalesAmount>=500000, SalesAmount*0.15, SalesAmount>=300000, SalesAmount*0.10, SalesAmount>=100000, SalesAmount*0.05, TRUE, 0)
สมมติ SalesAmount เป็น Named Range ที่มีค่า 300,000: ทดสอบ 300000>=500000 FALSE → 300000>=300000 TRUE → คืนค่า 300000*0.10 = 30,000 บาท
.
ตัวอย่างนี้แสดงการใช้สูตรคำนวณใน value_if_true แทนที่จะเป็นค่าคงที่ และใช้ TRUE, 0 สำหรับยอดขายต่ำกว่า 100,000 ไม่ได้ค่าคอมมิชชั่น
.
สังเกตนะครับว่า ลำดับเงื่อนไขต้องเรียงจากมากไปน้อย (500k → 300k → 100k) เพื่อให้ได้ผลถูกต้อง
Excel Formula:

=IFS(SalesAmount>=500000, SalesAmount*0.15, SalesAmount>=300000, SalesAmount*0.10, SalesAmount>=100000, SalesAmount*0.05, TRUE, 0)

Result:

45000 (เมื่อ SalesAmount = 300,000)

ตัวอย่างที่ 3: ใช้กับ Excel Table – จัดกลุ่มลูกค้า VIP
IFS(Customers[@TotalPurchase]>=1000000, "Diamond", Customers[@TotalPurchase]>=500000, "Platinum", Customers[@TotalPurchase]>=100000, "Gold", Customers[@TotalPur…
ใช้ structured reference [@TotalPurchase] จาก Excel Table ชื่อ Customers เพื่ออ้างอิงค่ายอดซื้อสะสมในแถวเดียวกัน
.
ถ้ายอดซื้อ 250,000: ทดสอบ 250000>=1000000 FALSE → 250000>=500000 FALSE → 250000>=100000 TRUE → คืนค่า "Gold"
.
การใช้ structured reference ทำให้สูตร copy ลงไปแต่ละแถวได้อัตโนมัติ โดยไม่ต้องปรับ cell reference และอ่านเข้าใจง่ายกว่าด้วยครับ 😎
Excel Formula:

=IFS(Customers[@TotalPurchase]>=1000000, "Diamond", Customers[@TotalPurchase]>=500000, "Platinum", Customers[@TotalPurchase]>=100000, "Gold", Customers[@TotalPurchase]>=10000, "Silver", TRUE, "Bronze")

Result:

Gold (เมื่อ TotalPurchase = 250,000)

ตัวอย่างที่ 4: ใช้ร่วมกับ IS functions – ตรวจสอบประเภทข้อมูล
IFS(ISBLANK(DataCell), "ไม่มีข้อมูล", ISERROR(DataCell), "ข้อมูลผิดพลาด", ISNUMBER(DataCell), "ตัวเลข", ISTEXT(DataCell), "ข้อความ", TRUE, "Boolean/อื่นๆ")
สมมติ DataCell เป็น Named Range ที่อ้างถึงเซลล์ที่มีค่า 1250: ISBLANK(1250) FALSE → ISERROR(1250) FALSE → ISNUMBER(1250) TRUE → คืนค่า "ตัวเลข"
.
ตัวอย่างนี้แสดงการเรียง logical_test ตามลำดับความเฉพาะเจาะจง โดย ISBLANK และ ISERROR ควรอยู่ก่อนเพราะเป็นกรณีพิเศษที่ต้องจัดการก่อน
.
ลำดับเงื่อนไขมีความสำคัญมากครับ ถ้าเรียงผิด อาจได้ผลลัพธ์ไม่ตรงความต้องการ
Excel Formula:

=IFS(ISBLANK(DataCell), "ไม่มีข้อมูล", ISERROR(DataCell), "ข้อมูลผิดพลาด", ISNUMBER(DataCell), "ตัวเลข", ISTEXT(DataCell), "ข้อความ", TRUE, "Boolean/อื่นๆ")

Result:

ตัวเลข (เมื่อ DataCell = 1250)

ตัวอย่างที่ 5: Advanced – ใช้กับ AND/OR สำหรับเงื่อนไขซับซ้อน
IFS(AND(Score>=80, Attendance>=90), "Excellent", AND(Score>=70, Attendance>=80), "Good", AND(Score>=60, Attendance>=70), "Fair", OR(Score
สมมติ Score และ Attendance เป็น Named Ranges: ทดสอบ AND(75>=80, 85>=90) ทั้งคู่ต้อง TRUE แต่ 75>=80 FALSE ดังนั้น AND คืนค่า FALSE → ทดสอบ AND(75>=70, 85>=80) ทั้งคู่เป็น TRUE → คืนค่า "Good"
.
ตัวอย่างนี้แสดงการใช้ IFS กับ logical functions เช่น AND (ต้องตรงทุกเงื่อนไข) และ OR (ตรงเงื่อนไขใดเงื่อนไขหนึ่ง) เพื่อสร้างเงื่อนไขที่ซับซ้อนขึ้น
Excel Formula:

=IFS(AND(Score>=80, Attendance>=90), "Excellent", AND(Score>=70, Attendance>=80), "Good", AND(Score>=60, Attendance>=70), "Fair", OR(Score<60, Attendance<70), "Needs Improvement", TRUE, "Unknown")

Result:

Good (เมื่อ Score=75, Attendance=85)

ตัวอย่างที่ 6: Edge Case – ไม่ใส่ TRUE ท้ายสุด
IFS(45>=80, "A", 45>=70, "B", 45>=60, "C")
คะแนน 45 ไม่ตรงเงื่อนไขใดเลย (45>=80 FALSE, 45>=70 FALSE, 45>=60 FALSE) และไม่มี TRUE เป็นค่า default จึงได้ #N/A error
.
นี่เป็นข้อผิดพลาดที่พบบ่อยมากครับ 😅 แนะนำให้ใส่ TRUE เป็น logical_test สุดท้ายเสมอ เช่น =IFS(45>=80, "A", 45>=70, "B", 45>=60, "C", TRUE, "F") จะได้ผลลัพธ์ "F" แทน #N/A ✨
Excel Formula:

=IFS(45>=80, "A", 45>=70, "B", 45>=60, "C")

Result:

#N/A

ตัวอย่างที่ 7: เปรียบเทียบ IFS กับ Nested IF
IFS(Score>=90, "A", Score>=80, "B", Score>=70, "C", Score>=60, "D", TRUE, "F")
IFS และ Nested IF ให้ผลลัพธ์เหมือนกัน แต่ IFS อ่านง่ายกว่ามาก โดยเฉพาะเมื่อมีหลายเงื่อนไข ไม่ต้องนับวงเล็บปิดซ้อนกัน 😎
.
เพิ่มเงื่อนไขใหม่ก็ง่ายกว่า เพียงแค่เพิ่มคู่ (logical_test, value_if_true) ท้ายสุด
.
อย่างไรก็ตาม Nested IF มีข้อดีคือ short-circuit evaluation (หยุดทำงานทันทีเมื่อเจอ TRUE) ส่วน IFS จะ evaluate ทุกเงื่อนไขก่อน ซึ่งอาจส่งผลต่อประสิทธิภาพในกรณีสูตรซับซ้อน
Excel Formula:

=IFS(Score>=90, "A", Score>=80, "B", Score>=70, "C", Score>=60, "D", TRUE, "F")

Result:

(เทียบเท่า Nested IF) =IF(Score>=90, "A", IF(Score>=80, "B", IF(Score>=70, "C", IF(Score>=60, "D", "F"))))

ตัวอย่างที่ 8: Real-World – ระบบคำนวณค่าจัดส่ง
IFS(AND(Region="Bangkok", Weight
สมมติ Region และ Weight เป็น Named Ranges: ตรวจสอบ AND("Bangkok"="Bangkok", 3<=2) FALSE → AND("Bangkok"="Bangkok", 3<=5) TRUE → คืนค่า 80 บาท
.
ตัวอย่างนี้แสดงการใช้ IFS กับเงื่อนไขหลายมิติ (ทั้งภูมิภาคและน้ำหนัก) เหมาะกับการคำนวณค่าจัดส่งที่มีหลายตัวแปร โดยใช้ AND เพื่อรวมเงื่อนไข และ TRUE เป็นค่า default สำหรับของหนักเกิน 5 กก. นอกกรุงเทพฯ 📦
Excel Formula:

=IFS(AND(Region="Bangkok", Weight<=2), 50, AND(Region="Bangkok", Weight<=5), 80, AND(Region="Bangkok", Weight>5), 120, AND(Region<>"Bangkok", Weight<=2), 80, AND(Region<>"Bangkok", Weight<=5), 120, TRUE, 200)

Result:

80 (เมื่อ Region="Bangkok", Weight=3)

FAQs

IFS ต่างจาก Nested IF อย่างไร และควรใช้อันไหน?

IFS เขียนและอ่านง่ายกว่า Nested IF เพราะไม่ต้องซ้อนวงเล็บหลายชั้น โครงสร้างเป็นคู่ (logical_test, value_if_true) วางเรียงกันไปตามลำดับ
.
เปรียบเทียบกันดูนะครับ:
– Nested IF: =IF(A>=90,”A”,IF(A>=80,”B”,IF(A>=70,”C”,”F”)))
– IFS: =IFS(A>=90,”A”,A>=80,”B”,A>=70,”C”,TRUE,”F”)
.
ยิ่งมีหลายเงื่อนไข IFS ยิ่งอ่านง่ายกว่ามาก อย่างไรก็ตาม Nested IF มี true short-circuit evaluation (หยุดทำงานทันทีเมื่อเจอ TRUE และไม่ evaluate เงื่อนไขที่เหลือ) ส่วน IFS จะ evaluate ทุก expression ก่อน ซึ่งอาจส่งผลต่อประสิทธิภาพในกรณีที่มีสูตรคำนวณซับซ้อนใน value_if_true
.
ส่วนตัวผมแนะนำใช้ IFS เมื่อต้องการความอ่านง่าย และใช้ Nested IF เมื่อต้องการประสิทธิภาพสูงสุดครับ

ทำไมได้ #N/A error และจะป้องกันอย่างไร?

เกิด #N/A error เพราะไม่มีเงื่อนไขใดเป็น TRUE เลย และไม่ได้ใส่ค่า default ไว้
.
วิธีแก้คือเพิ่ม TRUE เป็น logical_test สุดท้ายเสมอ พร้อมกำหนดค่า default ที่ต้องการ เช่น =IFS(Score>=80,”A”,Score>=70,”B”,TRUE,”C”) จะได้ “C” เมื่อคะแนนต่ำกว่า 70 แทนที่จะเป็น #N/A
.
การใส่ TRUE ท้ายสุดเป็น best practice ที่สำคัญของการใช้ IFS ครับ เพราะเงื่อนไข TRUE จะเป็น TRUE เสมอ ทำให้มั่นใจว่าจะมีค่าคืนกลับมาเสมอ 💡

ลำดับของเงื่อนไข (logical_test) สำคัญไหม?

สำคัญมากครับ! IFS ทดสอบเงื่อนไขตามลำดับจากซ้ายไปขวาและคืนค่าทันทีเมื่อเจอเงื่อนไขแรกที่เป็น TRUE แล้วหยุดการทำงาน
.
ดังนั้นต้องเรียงเงื่อนไขจากเฉพาะเจาะจงที่สุดไปยังกว้างที่สุด
.
ตัวอย่างเช่น: ถ้าต้องการตัดเกรด ต้องเรียง Score>=90 (A) ก่อน Score>=80 (B) ก่อน Score>=70 (C)
.
ถ้าเรียงกลับกัน (70 ก่อน 80 ก่อน 90) คะแนน 95 จะได้เกรด C เพราะ 95>=70 เป็น TRUE แล้ว ทำให้ไม่ถึงการทดสอบ 95>=80 และ 95>=90 เลย
.
นี่เป็นข้อผิดพลาดที่พบบ่อยมากครับ ระวังให้ดีนะครับ 😅

IFS รองรับ Excel เวอร์ชันไหนบ้าง?

IFS มีตั้งแต่ Excel 2019, Excel 2021 และ Microsoft 365 เท่านั้น ไม่มีใน Excel 2016, 2013, 2010 หรือเวอร์ชันเก่ากว่า รองรับทั้ง Windows, Mac และ Excel for the web ถ้าใช้งานกับเวอร์ชันเก่ากว่า 2019 ให้ใช้ Nested IF แทน หรือพิจารณาใช้ CHOOSE ร่วมกับ MATCH สำหรับกรณีที่เป็นการเลือกตาม index

IFS กับ SWITCH ต่างกันอย่างไร ควรเลือกใช้อันไหน?

IFS ใช้ logical operators (>=, <=, , =, ) เพื่อทดสอบเงื่อนไข เหมาะกับการเปรียบเทียบช่วงค่า (range) เช่น Score>=80
.
ส่วน SWITCH เปรียบเทียบค่าเท่ากัน (exact match) เท่านั้น เหมาะกับการเลือกตามค่าคงที่ เช่น Region=”North” และ SWITCH มี default value built-in อยู่แล้ว ไม่ต้องใส่ TRUE
.
แนะนำใช้ SWITCH เมื่อเปรียบเทียบค่าเท่ากันหลายตัวเลือก (อ่านง่ายกว่า) และใช้ IFS เมื่อต้องการเงื่อนไขที่ซับซ้อนหรือเปรียบเทียบช่วงค่า
.
ตัวอย่าง: =SWITCH(Region,”North”,10%,”South”,8%,5%) กับ =IFS(Region=”North”,10%,Region=”South”,8%,TRUE,5%) ให้ผลเหมือนกัน แต่ SWITCH อ่านง่ายกว่าครับ

IFS รองรับกี่เงื่อนไข และมีข้อจำกัดอะไรบ้าง?

IFS รองรับได้สูงสุด 127 คู่ (logical_test, value_if_true) แต่ถ้ามีเงื่อนไขเยอะมากควรพิจารณาใช้วิธีอื่น เช่น XLOOKUP, SWITCH หรือ lookup table เพื่อความอ่านง่ายและบำรุงรักษาง่ายกว่า
.
ข้อจำกัดอื่นๆ:
1) logical_test ต้องคืนค่า TRUE/FALSE เท่านั้น ถ้าไม่ใช่จะได้ #VALUE! error
2) ถ้าไม่มีเงื่อนไขใดเป็น TRUE และไม่มีค่า default จะได้ #N/A
3) IFS ไม่มี true short-circuit evaluation ทำให้อาจช้ากว่า Nested IF ในกรณีสูตรซับซ้อน
4) ความยาวสูตรรวมต้องไม่เกิน 8,192 ตัวอักษร (ข้อจำกัดของ Excel)

เมื่อไหร่ควรใช้ IFS และเมื่อไหร่ควรใช้วิธีอื่น?

ใช้ IFS เมื่อ:
1) มีเงื่อนไข 3-10 เงื่อนไข (มากกว่านี้อ่านยาก)
2) เงื่อนไขใช้ comparison operators (>=, <=)
3) ต้องการความอ่านง่ายกว่า Nested IF
4) ไม่มีการคำนวณซับซ้อนใน value_if_true
.
ใช้วิธีอื่นเมื่อ:
1) มีแค่ 1-2 เงื่อนไข → ใช้ IF ธรรมดา
2) เปรียบเทียบค่าเท่ากันเท่านั้น → ใช้ SWITCH (อ่านง่ายกว่า)
3) ค้นหาจากตาราง → ใช้ VLOOKUP/XLOOKUP
4) เงื่อนไขเกิน 10 เงื่อนไข → ใช้ lookup table
5) ต้องการประสิทธิภาพสูงสุด → ใช้ Nested IF (short-circuit)
6) ใช้ Excel 2016 หรือเก่ากว่า → ใช้ Nested IF (IFS ไม่รองรับ)

IFS จัดการ error อย่างไร และจะป้องกันอย่างไร?

IFS สามารถคืนค่า error ได้ 3 แบบ:
.
1) #N/A error เมื่อไม่มีเงื่อนไขใดเป็น TRUE และไม่มีค่า default → แก้ด้วยการใส่ TRUE เป็นเงื่อนไขสุดท้าย
.
2) #VALUE! error เมื่อ logical_test ไม่ได้คืนค่า TRUE/FALSE (เช่น ใส่ตัวเลขหรือข้อความ) → ตรวจสอบให้แน่ใจว่าเงื่อนไขใช้ comparison operators หรือ logical functions
.
3) “You’ve entered too few arguments” เมื่อมี logical_test แต่ไม่มี value_if_true คู่กัน → ตรวจสอบว่ามี argument ครบคู่ (logical_test, value_if_true)
.
นอกจากนี้ถ้ามี error ใน cell ที่ reference (เช่น #DIV/0!) จะส่งต่อ error นั้นมาด้วย สามารถใช้ IFERROR หรือ ISERROR เพื่อจัดการ error ได้ เช่น =IFS(ISERROR(A1),”Error”,A1>=80,”Pass”,TRUE,”Fail”)

Resources & Related

Additional Notes

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

.

ที่เจ๋งคือ IFS ช่วยให้เราเขียนเงื่อนไขซับซ้อนได้อ่านง่ายกว่า Nested IF มากครับ ไม่ต้องมานั่งซ้อนวงเล็บหลายชั้นจนงง 😅

.

โครงสร้างเป็นคู่ (logical_test, value_if_true) วางเรียงกันไป รองรับได้สูงสุด 127 คู่เงื่อนไข แต่ส่วนตัวผมว่าถ้าเกิน 10 เงื่อนไขควรพิจารณาใช้ lookup table แทนนะครับ 💡

.

ข้อสำคัญ: ควรใส่ TRUE เป็น logical_test สุดท้ายเสมอเพื่อกำหนดค่า default ป้องกัน #N/A error เมื่อไม่มีเงื่อนไขใดตรงเลย นี่คือ best practice ที่ผมแนะนำให้ทำทุกครั้งครับ 😎

.

มีตั้งแต่ Excel 2019 และ Microsoft 365 เท่านั้น ถ้าใช้เวอร์ชันเก่ากว่าจะต้องใช้ Nested IF แทนนะครับ

Leave a Reply

Your email address will not be published. Required fields are marked *