---
title: IF – ฟังก์ชันตรรกะพื้นฐาน
url: https://www.thepexcel.com/functions/excel/logical/if/
type: function-explainer
program: Excel
syntax: "=IF(logical_test, value_if_true, [value_if_false])"
date: 2025-12-18
scores:
  popularity: 10
  difficulty: 3
  usefulness: 10
---

# IF – ฟังก์ชันตรรกะพื้นฐาน

> ตัดสินใจสองทางตามเงื่อนไข

## คำอธิบาย

IF เป็นฟังก์ชันตรรกะพื้นฐานที่ใช้ตัดสินใจสองทางตามเงื่อนไข ตรวจสอบว่าเงื่อนไขเป็น TRUE หรือ FALSE แล้วคืนค่าที่แตกต่างกันไปตามผลลัพธ์ สามารถใช้ได้กับการเปรียบเทียบตัวเลข ข้อความ หรือวันที่ และเป็นพื้นฐานสำคัญของการสร้างสูตรแบบมีเงื่อนไข

## Syntax

```excel
=IF(logical_test, value_if_true, [value_if_false])
```

**excel**

```excel
=IF(75>=50, "ผ่าน", "ไม่ผ่าน")
```

ตรวจสอบคะแนน 75 ว่า >= 50 หรือไม่ → "ผ่าน"

**excel**

```excel
=IF(Sales[Amount]>1000, "VIP", "ปกติ")
```

ใช้กับ Table reference เพื่อจำแนกลูกค้า

**excel**

```excel
=IF(AND(Score>=50, Attendance>=80%), "ผ่าน", "ไม่ผ่าน")
```

ใช้ AND รวมหลายเงื่อนไข

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| logical_test | Yes | logical |  | เงื่อนไขที่ต้องการทดสอบ |
| value_if_true | Yes | any |  | ค่าที่คืนเมื่อเงื่อนไขเป็น TRUE |
| value_if_false | No | any | FALSE | ค่าที่คืนเมื่อเงื่อนไขเป็น FALSE |

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

### ผ่าน/ไม่ผ่านคะแนน

ให้ผลข้อความตามเกณฑ์คะแนนสอบ

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

### แจ้งเตือนช่องว่าง

เตือนให้กรอกข้อมูลเมื่อเซลล์ว่าง

_เหมาะกับ:_ data-entry

### คำนวณส่วนลด

ให้ส่วนลดเมื่อยอดซื้อเกินเกณฑ์

_เหมาะกับ:_ financial-function

## ตัวอย่าง

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

```excel
=IF(75>=50, "ผ่าน", "ไม่ผ่าน")
```

**ผลลัพธ์:** `ผ่าน`

ตรวจสอบว่า 75 >= 50 หรือไม่ เนื่องจากเงื่อนไขเป็น TRUE จึงคืนค่า "ผ่าน"
.
นี่คือการใช้งาน IF แบบพื้นฐานที่สุดครับ เปรียบเทียบตัวเลขแล้วให้ผลเป็นข้อความ 😎

### 2. ตัวอย่างที่ 2: ไม่ใส่ value_if_false

```excel
=IF(30>=50, "ผ่าน")
```

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

เมื่อเงื่อนไข 30>=50 เป็น FALSE และไม่ได้ระบุ value_if_false Excel จะคืนค่า FALSE โดยอัตโนมัติ
.
หลายคนมักลืมใส่ค่า FALSE แล้วสงสัยว่าทำไมมันขึ้น FALSE 😅 จำไว้นะครับว่า argument ตัวที่ 3 เป็น optional แต่ถ้าไม่ใส่ Excel จะให้ค่า FALSE แทน

### 3. ตัวอย่างที่ 3: คำนวณตัวเลขตามเงื่อนไข

```excel
=IF(10000>=5000, 10000*5%, 0)
```

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

ยอดซื้อ 10,000 >= 5,000 (TRUE) จึงให้ส่วนลด 5% → 10,000 × 0.05 = 500
.
นี่คือเทคนิคที่ใช้บ่อยมากครับ การใส่สูตรคำนวณใน value_if_true แทนที่จะเป็นแค่ข้อความหรือตัวเลขตายตัว ทำให้ IF สามารถคำนวณแบบมีเงื่อนไขได้ 💡

### 4. ตัวอย่างที่ 4: ซ้อน IF เพื่อตัดเกรด

```excel
=IF(75>=80, "A", IF(75>=70, "B", IF(75>=60, "C", "F")))
```

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

75 ไม่ >= 80 (ข้าม A) → 75 >= 70 (TRUE) → คืนค่า "B" โดยไม่ตรวจเงื่อนไขที่เหลือ
.
การซ้อน IF แบบนี้ใช้กันบ่อยมากครับ แต่ถ้าซ้อนเยอะมาก (5-6 ชั้นขึ้นไป) แนะนำให้ใช้ IFS แทนจะอ่านง่ายกว่า 😅

### 5. ตัวอย่างที่ 5: ใช้ AND รวมหลายเงื่อนไข

```excel
=IF(AND(25>=18, TRUE=TRUE), "ขับได้", "ขับไม่ได้")
```

**ผลลัพธ์:** `ขับได้`

AND ตรวจว่าเงื่อนไขทั้งหมดเป็น TRUE หรือไม่ (อายุ 25>=18 และมีใบขับขี่=TRUE) ทั้งคู่ TRUE จึงคืนค่า "ขับได้"
.
การใช้ IF + AND เป็นเทคนิคสำคัญมากเวลาต้องการให้ผ่านเงื่อนไขหลายอย่างพร้อมกัน ถ้าเงื่อนไขใดเงื่อนไขหนึ่งเป็น FALSE ทั้งหมดก็จะ FALSE ทันที 💡

### 6. ตัวอย่างที่ 6: ใช้ OR ให้ผ่านถ้าตรงเงื่อนไขใดเงื่อนไขหนึ่ง

```excel
=IF(OR(85>=80, 95>=90), "ได้รางวัล", "ไม่ได้รางวัล")
```

**ผลลัพธ์:** `ได้รางวัล`

OR ตรวจว่าเงื่อนไขใดเงื่อนไขหนึ่งเป็น TRUE (85>=80 หรือ 95>=90) ทั้งคู่ TRUE แต่แค่อันเดียวก็พอ → คืนค่า ได้รางวัล
.
ตรงข้ามกับ AND ที่ต้องผ่านทุกเงื่อนไข OR จะผ่านแค่เงื่อนไขใดเงื่อนไขหนึ่งก็พอ ใช้เวลาต้องการให้มีทางเลือกในการผ่านเงื่อนไขครับ 😎

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

💡 **พฤติกรรมพิเศษที่หลายคนไม่รู้:**

IF มีพฤติกรรมแปลกๆ ที่น่ารู้ครับ มาดูกัน:

| กรณี | ผลลัพธ์ | เหตุผล |
|------|---------|--------|
| =IF(TRUE, "Yes") | Yes | ไม่จำเป็นต้องใส่ value_if_false |
| =IF(FALSE, "Yes") | FALSE | ไม่ใส่ value_if_false → คืนค่า FALSE |
| =IF(1, "Yes", "No") | Yes | ตัวเลขที่ไม่ใช่ 0 ถือว่า TRUE |
| =IF(0, "Yes", "No") | No | ตัวเลข 0 ถือว่า FALSE |
| =IF("", "Yes", "No") | No | ข้อความว่างถือว่า FALSE |
| =IF("A", "Yes", "No") | #VALUE! | ข้อความที่ไม่ใช่ค่าว่างทำให้ error |
.
ส่วนตัวผมเคยโดน case ที่ 6 มาแล้ว คิดว่าข้อความจะถือว่า TRUE แต่กลับขึ้น error 😅
.
**ข้อจำกัดและทางเลือก:**
- ซ้อนได้สูงสุด 64 ชั้น (แต่อย่าทำนะครับ! อ่านยาก debug ยากกว่าเดิมเยอะ)
- ใช้ **IFS** แทนการซ้อน IF หลายชั้น อ่านง่ายกว่าเยอะ
- ใช้ **SWITCH** เมื่อเปรียบเทียบค่าเดียวกับหลายตัวเลือก
- ใช้ **CHOOSE** เมื่อเลือกจากลำดับตัวเลข 1, 2, 3, ...
- ใช้ **XLOOKUP/VLOOKUP** เมื่อเกณฑ์เยอะมาก เอาไปใส่ในตารางจะจัดการง่ายกว่า

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

**Q: ซ้อน IF ได้กี่ชั้น?**

Excel รองรับ IF ซ้อนได้สูงสุด 64 ชั้น แต่จริงๆ แล้วไม่ควรซ้อนเยอะขนาดนั้นหรอกครับ 😅
.
ถ้าซ้อนเกิน 3-4 ชั้น ควรใช้ IFS หรือ SWITCH แทนเพื่อให้สูตรอ่านง่ายและแก้ไขได้สะดวกกว่า ส่วนตัวผมไม่เคยซ้อน IF เกิน 5 ชั้นเลยครับ

**Q: IF คืน FALSE ทั้งที่เงื่อนไขดูถูกต้อง ทำไม?**

ปัญหานี้เจอบ่อยมากครับ 😭 สาเหตุหลักๆ มี 3 ข้อ:
.
1. **ช่องว่างซ่อนอยู่** - ข้อมูลดูเหมือนตรงกัน แต่มีช่องว่างข้างหน้าหรือข้างหลัง ลอง TRIM() ดูครับ
2. **Data Type ไม่ตรงกัน** - ตัวเลขในรูปแบบ Text เปรียบเทียบกับตัวเลขจริง Excel จะถือว่าไม่เท่ากัน ใช้ VALUE() แปลงเป็นตัวเลขก่อน
3. **ตัวพิมพ์เล็ก-ใหญ่** - ถ้าเปรียบเทียบข้อความ Excel ไม่สนใจตัวพิมพ์ แต่ถ้าใช้ EXACT() จะสนใจ
.
ส่วนตัวผมชอบใช้ TRIM() กับข้อมูลก่อนเสมอเวลาเปรียบเทียบข้อความครับ

**Q: ความแตกต่างระหว่าง IF กับ IFS/SWITCH คืออะไร?**

เจ๋งว่าถามครับ! มาดูความแตกต่างกัน:
.
- **IF** = ตัดสินใจ 2 ทาง (TRUE/FALSE) เหมาะกับเงื่อนไขง่ายๆ
- **IFS** = หลายเงื่อนไข แต่ละเงื่อนไขมีค่าคืนของตัวเอง ใช้แทน IF ซ้อนหลายชั้น อ่านง่ายกว่า
- **SWITCH** = เปรียบเทียบค่าเดียว กับหลายตัวเลือก เหมือน switch-case ในภาษาโปรแกรม
.
ตัวอย่าง: ถ้าต้องการตัดเกรด A/B/C/D/F แนะนำให้ใช้ IFS จะสั้นกว่าการซ้อน IF 😎

**Q: ต้องการหลีกเลี่ยงการซ้อน IF มากเกินไปทำอย่างไร?**

ถามดีครับ! มีหลายวิธีเลย:
.
1. **ใช้ IFS แทน** - เช่น =IFS(Score>=80, "A", Score>=70, "B", Score>=60, "C", TRUE, "F") อ่านง่ายกว่า IF ซ้อนเยอะๆ
2. **ใช้ SWITCH** - ถ้าเปรียบเทียบค่าเดียวกับหลายตัวเลือก เช่น =SWITCH(Grade, "A", 4.0, "B", 3.0, "C", 2.0, 0)
3. **ใช้ VLOOKUP/XLOOKUP** - เอาเกณฑ์ไปใส่ในตารางแทน อ่านง่ายและแก้ไขสะดวก
.
ส่วนตัวผมไม่ซ้อน IF เกิน 3 ชั้นครับ ถ้าซับซ้อนกว่านั้นมักจะใช้ IFS หรือ VLOOKUP แทน 😎

**Q: IF ใช้ได้กับเปรียบเทียบวันที่ได้ไหม?**

ได้สบายเลยครับ! 😎
.
เช่น =IF(TODAY()>DueDate, "เลยกำหนด", "ยังไม่เลย") จะเช็คว่าวันนี้เลยกำหนดหรือยัง
.
ทำไมถึงใช้ได้? เพราะ Excel เก็บวันที่เป็นตัวเลข (Serial Number) อยู่เบื้องหลังครับ เช่น 1 มกราคม 2024 = 45292 ดังนั้นการเปรียบเทียบวันที่จึงเหมือนเปรียบเทียบตัวเลขธรรมดา
.
สามารถใช้ได้กับทุกตัวดำเนินการ: >, =,

**Q: ต้องการให้ IF คืนค่าว่างแทนที่ค่าอื่นได้ไหม?**

ได้ครับ ใส่เครื่องหมายคำพูดว่าง "" เป็นค่าคืน
.
ตัวอย่าง: =IF(A1="", "", A1) ถ้า A1 ว่าง → คืนค่าว่าง ถ้าไม่ว่าง → คืนค่า A1
.
**เทคนิคพิเศษ:**
ถ้าต้องการซ่อน error ให้แสดงค่าว่างแทน ใช้ IFERROR จะสะดวกกว่า:
=IFERROR(A1/B1, "") ← ถ้าหารไม่ได้ (เช่น B1=0) จะแสดงค่าว่างแทนที่จะขึ้น #DIV/0!
.
ส่วนตัวผมใช้เทคนิคนี้บ่อยมากเวลาทำรายงานครับ เพราะดูสะอาดตากว่าขึ้น error เต็มหน้าจอ 😅

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

- [AND – ตรวจสอบเงื่อนไขทั้งหมดว่าเป็นจริง](https://www.thepexcel.com/functions/excel/logical/and/)
- [CHOOSE – เลือกค่าตามลำดับ](https://www.thepexcel.com/functions/excel/lookup-and-reference/choose/)
- [IFERROR – ดักจับ Error และเปลี่ยนเป็นค่าอื่น](https://www.thepexcel.com/functions/excel/logical/iferror/)
- [IFNA – แทนค่าเมื่อพบ #N/A Error](https://www.thepexcel.com/functions/excel/logical/ifna/)
- [IFS – ทดสอบหลายเงื่อนไขแบบมีลำดับความสำคัญ](https://www.thepexcel.com/functions/excel/logical/ifs/)
- [ISBLANK – ตรวจสอบว่าเซลล์ว่างเปล่า](https://www.thepexcel.com/functions/excel/information/isblank/)
- [LET – กำหนดตัวแปรในสูตรเพื่อเพิ่มความเร็วและความชัดเจน](https://www.thepexcel.com/functions/excel/logical/let/)
- [NOT – กลับค่าตรรกะ (Logical Negation)](https://www.thepexcel.com/functions/excel/logical/not/)
- [OR – ตรวจสอบเงื่อนไขอย่างน้อยหนึ่งข้อว่าเป็นจริง](https://www.thepexcel.com/functions/excel/logical/or/)
- [SWITCH – ฟังก์ชันเลือกค่าตามเงื่อนไขหลายทาง](https://www.thepexcel.com/functions/excel/logical/switch/)
- [XOR – ตรวจสอบเงื่อนไขแบบ Exclusive OR](https://www.thepexcel.com/functions/excel/logical/xor/)

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

- [Microsoft Support: IF function](https://support.microsoft.com/en-us/office/if-function-69aed7c9-4e8a-4755-a9bc-aa8bbff73be2) _(official)_
- [ExcelJet: Excel IF function](https://exceljet.net/functions/if-function) _(guide)_
- [ExcelJet: How to use nested IF functions](https://exceljet.net/formulas/nested-if-statement) _(tutorial)_

---

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