---
title: IFS – ทดสอบหลายเงื่อนไขแบบมีลำดับความสำคัญ
url: https://www.thepexcel.com/functions/excel/logical/ifs/
type: function-explainer
program: Excel
syntax: "=IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2], ...)"
date: 2025-12-18
scores:
  popularity: 9
  difficulty: 6
  usefulness: 9
---

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

> ทดสอบหลายเงื่อนไขตามลำดับและคืนค่าของเงื่อนไขแรกที่เป็น TRUE

## คำอธิบาย

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

## Syntax

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

**excel**

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

ตัดเกรดจากคะแนนสอบ 5 ระดับ (A-F) พร้อม TRUE เป็นค่า default สำหรับคะแนนต่ำกว่า 60

**excel**

```excel
=IFS(Sales[Amount]>=100000, 15%, Sales[Amount]>=50000, 10%, Sales[Amount]>=10000, 5%, TRUE, 0%)
```

คำนวณอัตราส่วนลดแบบขั้นบันไดตามยอดซื้อ 4 ระดับ พร้อมส่วนลด 0% สำหรับยอดซื้อต่ำกว่า 10,000

**excel**

```excel
=IFS(Status="Urgent", "สีแดง", Status="High", "สีส้ม", Status="Normal", "สีเขียว", TRUE, "สีเทา")
```

กำหนดสีตามระดับความสำคัญของงาน โดยใช้ structured reference กับ Excel Table

**excel**

```excel
=IFS(ISBLANK(Cell), "ไม่มีข้อมูล", ISERROR(Cell), "ข้อมูลผิดพลาด", ISNUMBER(Cell), "ตัวเลข", ISTEXT(Cell), "ข้อความ", TRUE, "ประเภทอื่น")
```

ตรวจสอบประเภทข้อมูลในเซลล์ด้วย IS functions เรียงตามลำดับความเฉพาะเจาะจง

## Arguments

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

## เคสการใช้งาน

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

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

_เหมาะกับ:_ education

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

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

_เหมาะกับ:_ finance

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

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

_เหมาะกับ:_ categorization

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

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

_เหมาะกับ:_ monitoring

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

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

_เหมาะกับ:_ finance

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: พื้นฐาน - ตัดเกรดจากคะแนนสอบ

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

**ผลลัพธ์:** `B`

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

### 2. ตัวอย่างที่ 2: การใช้งานจริง - คำนวณค่าคอมมิชชั่นแบบขั้นบันได

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

**ผลลัพธ์:** `45000 (เมื่อ SalesAmount = 300,000)`

สมมติ 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) เพื่อให้ได้ผลถูกต้อง

### 3. ตัวอย่างที่ 3: ใช้กับ Excel Table - จัดกลุ่มลูกค้า VIP

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

**ผลลัพธ์:** `Gold (เมื่อ TotalPurchase = 250,000)`

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

### 4. ตัวอย่างที่ 4: ใช้ร่วมกับ IS functions - ตรวจสอบประเภทข้อมูล

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

**ผลลัพธ์:** `ตัวเลข (เมื่อ DataCell = 1250)`

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

### 5. ตัวอย่างที่ 5: Advanced - ใช้กับ AND/OR สำหรับเงื่อนไขซับซ้อน

```excel
=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")
```

**ผลลัพธ์:** `Good (เมื่อ Score=75, Attendance=85)`

สมมติ 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 (ตรงเงื่อนไขใดเงื่อนไขหนึ่ง) เพื่อสร้างเงื่อนไขที่ซับซ้อนขึ้น

### 6. ตัวอย่างที่ 6: Edge Case - ไม่ใส่ TRUE ท้ายสุด

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

**ผลลัพธ์:** `#N/A`

คะแนน 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 ✨

### 7. ตัวอย่างที่ 7: เปรียบเทียบ IFS กับ Nested IF

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

**ผลลัพธ์:** `(เทียบเท่า Nested IF) =IF(Score>=90, "A", IF(Score>=80, "B", IF(Score>=70, "C", IF(Score>=60, "D", "F"))))`

IFS และ Nested IF ให้ผลลัพธ์เหมือนกัน แต่ IFS อ่านง่ายกว่ามาก โดยเฉพาะเมื่อมีหลายเงื่อนไข ไม่ต้องนับวงเล็บปิดซ้อนกัน 😎
.
เพิ่มเงื่อนไขใหม่ก็ง่ายกว่า เพียงแค่เพิ่มคู่ (logical_test, value_if_true) ท้ายสุด
.
อย่างไรก็ตาม Nested IF มีข้อดีคือ short-circuit evaluation (หยุดทำงานทันทีเมื่อเจอ TRUE) ส่วน IFS จะ evaluate ทุกเงื่อนไขก่อน ซึ่งอาจส่งผลต่อประสิทธิภาพในกรณีสูตรซับซ้อน

### 8. ตัวอย่างที่ 8: Real-World - ระบบคำนวณค่าจัดส่ง

```excel
=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)
```

**ผลลัพธ์:** `80 (เมื่อ Region="Bangkok", Weight=3)`

สมมติ Region และ Weight เป็น Named Ranges: ตรวจสอบ AND("Bangkok"="Bangkok", 3

## หมายเหตุเพิ่มเติม

💡 **Tip สำคัญ**: IFS เป็นฟังก์ชันที่ช่วยให้เราเขียนเงื่อนไขหลายระดับได้อ่านง่ายกว่า Nested IF มาก ส่วนตัวผมมักใช้ IFS เวลาต้องการตัดเกรด จัดกลุ่ม หรือคำนวณค่าตามช่วง (tier-based calculation) ครับ
.
แต่มีข้อสำคัญที่ต้องจำ: **ใส่ TRUE เป็นเงื่อนไขสุดท้ายเสมอ** ไม่งั้นจะได้ #N/A error แบบงงๆ เวลาไม่ตรงเงื่อนไขใด 😅

## การทำงานของ IFS

IFS ประเมินเงื่อนไข (logical_test) ตามลำดับจากซ้ายไปขวาและคืนค่า (value_if_true) ของเงื่อนไขแรกที่เป็น TRUE แล้วหยุดการทำงาน:

```
=IFS(เงื่อนไข1, ผลลัพธ์1, เงื่อนไข2, ผลลัพธ์2, ..., TRUE, default)

ขั้นตอน:
1. ทดสอบ เงื่อนไข1 → ถ้า TRUE คืนค่า ผลลัพธ์1 (จบ)
2. ทดสอบ เงื่อนไข2 → ถ้า TRUE คืนค่า ผลลัพธ์2 (จบ)
3. ทดสอบต่อเรื่อยๆ ตามลำดับ
4. ถึง TRUE (เงื่อนไขสุดท้าย) → คืนค่า default (จบ)
5. ถ้าไม่มีเงื่อนไขใดเป็น TRUE และไม่มี TRUE → #N/A error
```

## เปรียบเทียบ IFS กับฟังก์ชันอื่น

| ฟังก์ชัน | เหมาะกับ | Syntax ตัวอย่าง | Default Value |
|----------|---------|-----------------|---------------|
| **IF** | 2 ทางเลือก | `=IF(A>80,"Pass","Fail")` | มี (value_if_false) |
| **IFS** | หลายเงื่อนไข logic | `=IFS(A>=90,"A",A>=80,"B",TRUE,"C")` | ไม่มี (ใส่ TRUE แทน) |
| **SWITCH** | เปรียบเทียบค่าเท่ากัน | `=SWITCH(Region,"North",10%,"South",8%,5%)` | มี (argument สุดท้าย) |
| **CHOOSE** | เลือกจาก index | `=CHOOSE(2,"A","B","C")` | ไม่มี |
| **XLOOKUP** | ค้นหาจากตาราง | `=XLOOKUP(key,array,return_array,default)` | มี (if_not_found) |

## ข้อดีและข้อเสียของ IFS

### ✅ ข้อดี
- **อ่านง่าย**: โครงสร้างเป็นคู่ (logical_test, value_if_true) ไม่ต้องซ้อนวงเล็บ
- **บำรุงรักษาง่าย**: เพิ่มเงื่อนไขใหม่ได้ง่ายโดยเพิ่มคู่ท้ายสุด
- **ไม่ต้องนับวงเล็บ**: ไม่ต้องปิดวงเล็บซ้อนกันหลายชั้นเหมือน Nested IF
- **รองรับหลายเงื่อนไข**: สูงสุด 127 คู่เงื่อนไข

### ❌ ข้อเสีย
- **ไม่มี default built-in**: ต้องใส่ TRUE เป็นเงื่อนไขสุดท้ายเอง (SWITCH มี default)
- **No true short-circuit**: Evaluate ทุก expression ก่อนแม้จะเจอ TRUE แล้ว อาจช้ากว่า Nested IF
- **รองรับเฉพาะ Excel 2019+**: ไม่มีใน Excel 2016 หรือเก่ากว่า
- **Error handling**: ถ้าไม่ใส่ TRUE จะได้ #N/A เมื่อไม่ตรงเงื่อนไขใด

## Best Practices สำหรับการใช้ IFS

1. **เรียงเงื่อนไขจากเฉพาะเจาะจงไปกว้าง**: >=90 ก่อน >=80 ก่อน >=70 (สำหรับเกรด)
2. **ใส่ TRUE เป็นเงื่อนไขสุดท้ายเสมอ**: ป้องกัน #N/A error
3. **ใช้ Named Range หรือ Table reference**: แทน cell reference (A1, B2) เพื่อความอ่านง่าย
4. **จำกัดจำนวนเงื่อนไข 3-10 คู่**: เกินนี้ควรใช้ lookup table หรือ XLOOKUP
5. **ใช้ line breaks**: แบ่งสูตรหลายบรรทัดใน formula bar เพื่อความอ่านง่าย (Alt+Enter)
6. **พิจารณาประสิทธิภาพ**: ถ้ามีการคำนวณซับซ้อนใน value_if_true ให้ใช้ Nested IF แทน
7. **จัดการ error**: ใช้ IFERROR ครอบ IFS หรือใช้ ISERROR ใน logical_test เพื่อจัดการ error

## เคล็ดลับการเขียน IFS

**ใช้ line breaks สำหรับความอ่านง่าย**:
```excel
=IFS(
    Score>=90, "A",
    Score>=80, "B",
    Score>=70, "C",
    Score>=60, "D",
    TRUE, "F"
)
```

**รวมกับ AND/OR สำหรับเงื่อนไขซับซ้อน**:
```excel
=IFS(
    AND(Sales>=100000, Region="North"), 15%,
    AND(Sales>=50000, Region="North"), 10%,
    Sales>=100000, 12%,
    Sales>=50000, 8%,
    TRUE, 5%
)
```

**ใช้ IFERROR เพื่อจัดการ error**:
```excel
=IFERROR(
    IFS(A1>=80, "Pass", A1>=60, "Conditional", TRUE, "Fail"),
    "Invalid Data"
)
```

## เมื่อไหร่ไม่ควรใช้ IFS

- เมื่อมีเงื่อนไขเดียว → ใช้ IF ธรรมดา
- เมื่อเปรียบเทียบค่าเท่ากันเท่านั้น → ใช้ SWITCH (อ่านง่ายกว่า)
- เมื่อค้นหาจากตาราง → ใช้ VLOOKUP/XLOOKUP
- เมื่อมีเงื่อนไขมากกว่า 10 คู่ → ใช้ lookup table
- เมื่อต้องการประสิทธิภาพสูงสุด → ใช้ Nested IF (short-circuit)
- เมื่อใช้ Excel 2016 หรือเก่ากว่า → ใช้ Nested IF (IFS ไม่รองรับ)

## คำถามที่พบบ่อย

**Q: 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 เมื่อต้องการประสิทธิภาพสูงสุดครับ

**Q: ทำไมได้ #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 เสมอ ทำให้มั่นใจว่าจะมีค่าคืนกลับมาเสมอ 💡

**Q: ลำดับของเงื่อนไข (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 เลย
.
นี่เป็นข้อผิดพลาดที่พบบ่อยมากครับ ระวังให้ดีนะครับ 😅

**Q: 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

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

IFS ใช้ logical operators (>=, =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 อ่านง่ายกว่าครับ

**Q: 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)

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

ใช้ IFS เมื่อ:
1) มีเงื่อนไข 3-10 เงื่อนไข (มากกว่านี้อ่านยาก)
2) เงื่อนไขใช้ comparison operators (>=,

**Q: 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")

## ฟังก์ชันที่เกี่ยวข้อง

- [IF – ฟังก์ชันตรรกะพื้นฐาน](https://www.thepexcel.com/functions/excel/logical/if/)
- [IFERROR – ดักจับ Error และเปลี่ยนเป็นค่าอื่น](https://www.thepexcel.com/functions/excel/logical/iferror/)
- [SWITCH – ฟังก์ชันเลือกค่าตามเงื่อนไขหลายทาง](https://www.thepexcel.com/functions/excel/logical/switch/)
- [CHOOSE – เลือกค่าตามลำดับ](https://www.thepexcel.com/functions/excel/lookup-and-reference/choose/)
- [XLOOKUP – ฟังก์ชันค้นหาข้อมูลแนวตั้งและแนวนอน](https://www.thepexcel.com/functions/excel/lookup-and-reference/xlookup/)
- [AND – ตรวจสอบเงื่อนไขทั้งหมดว่าเป็นจริง](https://www.thepexcel.com/functions/excel/logical/and/)
- [OR – ตรวจสอบเงื่อนไขอย่างน้อยหนึ่งข้อว่าเป็นจริง](https://www.thepexcel.com/functions/excel/logical/or/)
- [ISBLANK – ตรวจสอบว่าเซลล์ว่างเปล่า](https://www.thepexcel.com/functions/excel/information/isblank/)
- [ISERROR – ตรวจสอบว่ามี Error หรือไม่ (ทุกประเภท)](https://www.thepexcel.com/functions/excel/information/iserror/)
- [ISNUMBER – ตรวจสอบว่าเป็นตัวเลขหรือไม่](https://www.thepexcel.com/functions/excel/information/isnumber/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Support: IFS function](https://support.microsoft.com/en-us/office/ifs-function-36329a26-37b2-467c-972b-4a39bd951d45) _(official)_
- [ExcelJet: Excel IFS function](https://exceljet.net/functions/ifs-function) _(guide)_
- [Xelplus: IFS vs Nested IF comparison](https://www.xelplus.com/excel-ifs-function/) _(tutorial)_

---

_Source: [https://www.thepexcel.com/functions/excel/logical/ifs/](https://www.thepexcel.com/functions/excel/logical/ifs/)_
