IF เป็นฟังก์ชันตรรกะพื้นฐานที่ใช้ตัดสินใจสองทางตามเงื่อนไข ตรวจสอบว่าเงื่อนไขเป็น TRUE หรือ FALSE แล้วคืนค่าที่แตกต่างกันไปตามผลลัพธ์ สามารถใช้ได้กับการเปรียบเทียบตัวเลข ข้อความ หรือวันที่ และเป็นพื้นฐานสำคัญของการสร้างสูตรแบบมีเงื่อนไข
=IF(logical_test, value_if_true, [value_if_false])
=IF(logical_test, value_if_true, [value_if_false])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| logical_test | logical | Yes | เงื่อนไขที่ต้องการทดสอบ | |
| value_if_true | any | Yes | ค่าที่คืนเมื่อเงื่อนไขเป็น TRUE | |
| value_if_false | any | Optional | FALSE | ค่าที่คืนเมื่อเงื่อนไขเป็น FALSE |
ให้ผลข้อความตามเกณฑ์คะแนนสอบ
เตือนให้กรอกข้อมูลเมื่อเซลล์ว่าง
ให้ส่วนลดเมื่อยอดซื้อเกินเกณฑ์
IF(75>=50, "ผ่าน", "ไม่ผ่าน")=IF(75>=50, "ผ่าน", "ไม่ผ่าน")
ผ่าน
IF(30>=50, "ผ่าน")=IF(30>=50, "ผ่าน")
FALSE
IF(10000>=5000, 10000*5%, 0)=IF(10000>=5000, 10000*5%, 0)
500
IF(75>=80, "A", IF(75>=70, "B", IF(75>=60, "C", "F")))=IF(75>=80, "A", IF(75>=70, "B", IF(75>=60, "C", "F")))
B
IF(AND(25>=18, TRUE=TRUE), "ขับได้", "ขับไม่ได้")=IF(AND(25>=18, TRUE=TRUE), "ขับได้", "ขับไม่ได้")
ขับได้
IF(OR(85>=80, 95>=90), "ได้รางวัล", "ไม่ได้รางวัล")=IF(OR(85>=80, 95>=90), "ได้รางวัล", "ไม่ได้รางวัล")
ได้รางวัล
Excel รองรับ IF ซ้อนได้สูงสุด 64 ชั้น แต่จริงๆ แล้วไม่ควรซ้อนเยอะขนาดนั้นหรอกครับ 😅
.
ถ้าซ้อนเกิน 3-4 ชั้น ควรใช้ IFS หรือ SWITCH แทนเพื่อให้สูตรอ่านง่ายและแก้ไขได้สะดวกกว่า ส่วนตัวผมไม่เคยซ้อน IF เกิน 5 ชั้นเลยครับ
ปัญหานี้เจอบ่อยมากครับ 😭 สาเหตุหลักๆ มี 3 ข้อ:
.
1. **ช่องว่างซ่อนอยู่** – ข้อมูลดูเหมือนตรงกัน แต่มีช่องว่างข้างหน้าหรือข้างหลัง ลอง TRIM() ดูครับ
2. **Data Type ไม่ตรงกัน** – ตัวเลขในรูปแบบ Text เปรียบเทียบกับตัวเลขจริง Excel จะถือว่าไม่เท่ากัน ใช้ VALUE() แปลงเป็นตัวเลขก่อน
3. **ตัวพิมพ์เล็ก-ใหญ่** – ถ้าเปรียบเทียบข้อความ Excel ไม่สนใจตัวพิมพ์ แต่ถ้าใช้ EXACT() จะสนใจ
.
ส่วนตัวผมชอบใช้ TRIM() กับข้อมูลก่อนเสมอเวลาเปรียบเทียบข้อความครับ
เจ๋งว่าถามครับ! มาดูความแตกต่างกัน:
.
– **IF** = ตัดสินใจ 2 ทาง (TRUE/FALSE) เหมาะกับเงื่อนไขง่ายๆ
– **IFS** = หลายเงื่อนไข แต่ละเงื่อนไขมีค่าคืนของตัวเอง ใช้แทน IF ซ้อนหลายชั้น อ่านง่ายกว่า
– **SWITCH** = เปรียบเทียบค่าเดียว กับหลายตัวเลือก เหมือน switch-case ในภาษาโปรแกรม
.
ตัวอย่าง: ถ้าต้องการตัดเกรด A/B/C/D/F แนะนำให้ใช้ IFS จะสั้นกว่าการซ้อน 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 แทน 😎
ได้สบายเลยครับ! 😎
.
เช่น =IF(TODAY()>DueDate, “เลยกำหนด”, “ยังไม่เลย”) จะเช็คว่าวันนี้เลยกำหนดหรือยัง
.
ทำไมถึงใช้ได้? เพราะ Excel เก็บวันที่เป็นตัวเลข (Serial Number) อยู่เบื้องหลังครับ เช่น 1 มกราคม 2024 = 45292 ดังนั้นการเปรียบเทียบวันที่จึงเหมือนเปรียบเทียบตัวเลขธรรมดา
.
สามารถใช้ได้กับทุกตัวดำเนินการ: >, =, <=, = ตามปกติครับ 💡
ได้ครับ ใส่เครื่องหมายคำพูดว่าง “” เป็นค่าคืน
.
ตัวอย่าง: =IF(A1=””, “”, A1) ถ้า A1 ว่าง → คืนค่าว่าง ถ้าไม่ว่าง → คืนค่า A1
.
**เทคนิคพิเศษ:**
ถ้าต้องการซ่อน error ให้แสดงค่าว่างแทน ใช้ IFERROR จะสะดวกกว่า:
=IFERROR(A1/B1, “”) ← ถ้าหารไม่ได้ (เช่น B1=0) จะแสดงค่าว่างแทนที่จะขึ้น #DIV/0!
.
ส่วนตัวผมใช้เทคนิคนี้บ่อยมากเวลาทำรายงานครับ เพราะดูสะอาดตากว่าขึ้น error เต็มหน้าจอ 😅
IF เป็นฟังก์ชันตรรกะพื้นฐานที่ใครๆ ก็ต้องรู้จักครับ 😎
.
หน้าที่หลักคือ… ตรวจสอบเงื่อนไขแล้วตัดสินใจ 2 ทาง
.
ตัวอย่างง่ายๆ: =IF(คะแนน>=50, “ผ่าน”, “ไม่ผ่าน”)
.
IF ใช้ได้กับหลายอย่างครับ ไม่ว่าจะเป็นการเปรียบเทียบตัวเลข ข้อความ หรือแม้แต่วันที่ก็ได้ 💡
.
ที่เจ๋งคือเราสามารถซ้อน IF ได้หลายชั้นเพื่อตัดสินใจที่ซับซ้อนขึ้น
.
เช่น ตัดเกรด A/B/C/D/F ตามคะแนนสอบ หรือใช้ร่วมกับ AND/OR เพื่อเช็คหลายเงื่อนไขพร้อมกัน
.
แต่ถ้าซ้อนเยอะเกินไป (5-6 ชั้นขึ้นไป) แนะนำให้ใช้ IFS หรือ SWITCH แทนนะครับ จะอ่านง่ายกว่าเยอะ 😅