Thep Excel

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

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

fx
=IF(logical_test, value_if_true, [value_if_false])

ความนิยม10/10
ความยาก3/10
ประโยชน์10/10

อัปเดต 18 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
logical_test logical เงื่อนไขที่ต้องการทดสอบ
value_if_true any ค่าที่คืนเมื่อเงื่อนไขเป็น TRUE
[value_if_false]ไม่บังคับ any FALSE ค่าที่คืนเมื่อเงื่อนไขเป็น FALSE

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

IF เป็นฟังก์ชันตรรกะพื้นฐานที่ใครๆ ก็ต้องรู้จักครับ 😎

.

หน้าที่หลักคือ… ตรวจสอบเงื่อนไขแล้วตัดสินใจ 2 ทาง

  • ถ้าเงื่อนไขเป็น TRUE → คืนค่าหนึ่ง
  • ถ้าเป็น FALSE → คืนอีกค่าหนึ่ง

.

ตัวอย่างง่ายๆ: =IF(คะแนน>=50, “ผ่าน”, “ไม่ผ่าน”)

.

IF ใช้ได้กับหลายอย่างครับ ไม่ว่าจะเป็นการเปรียบเทียบตัวเลข ข้อความ หรือแม้แต่วันที่ก็ได้ 💡

.

ที่เจ๋งคือเราสามารถซ้อน IF ได้หลายชั้นเพื่อตัดสินใจที่ซับซ้อนขึ้น

.

เช่น ตัดเกรด A/B/C/D/F ตามคะแนนสอบ หรือใช้ร่วมกับ AND/OR เพื่อเช็คหลายเงื่อนไขพร้อมกัน

.

แต่ถ้าซ้อนเยอะเกินไป (5-6 ชั้นขึ้นไป) แนะนำให้ใช้ IFS หรือ SWITCH แทนนะครับ จะอ่านง่ายกว่าเยอะ 😅

How it works

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

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

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

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

คำนวณส่วนลด

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

Examples

ตัวอย่างที่ 1: พื้นฐาน – ตรวจสอบค่าตัวเลขIF(75>=50, "ผ่าน", "ไม่ผ่าน")

ตรวจสอบว่า 75 >= 50 หรือไม่ เนื่องจากเงื่อนไขเป็น TRUE จึงคืนค่า "ผ่าน"

นี่คือการใช้งาน IF แบบพื้นฐานที่สุดครับ เปรียบเทียบตัวเลขแล้วให้ผลเป็นข้อความ 😎

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

ผลลัพธ์ผ่าน
ตัวอย่างที่ 2: ไม่ใส่ value_if_falseIF(30>=50, "ผ่าน")

เมื่อเงื่อนไข 30>=50 เป็น FALSE และไม่ได้ระบุ value_if_false Excel จะคืนค่า FALSE โดยอัตโนมัติ

หลายคนมักลืมใส่ค่า FALSE แล้วสงสัยว่าทำไมมันขึ้น FALSE 😅 จำไว้นะครับว่า argument ตัวที่ 3 เป็น optional แต่ถ้าไม่ใส่ Excel จะให้ค่า FALSE แทน

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

ผลลัพธ์FALSE
ตัวอย่างที่ 3: คำนวณตัวเลขตามเงื่อนไขIF(10000>=5000, 10000*5%, 0)

ยอดซื้อ 10,000 >= 5,000 (TRUE) จึงให้ส่วนลด 5% → 10,000 × 0.05 = 500

นี่คือเทคนิคที่ใช้บ่อยมากครับ การใส่สูตรคำนวณใน value_if_true แทนที่จะเป็นแค่ข้อความหรือตัวเลขตายตัว ทำให้ IF สามารถคำนวณแบบมีเงื่อนไขได้ 💡

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

ผลลัพธ์500
ตัวอย่างที่ 4: ซ้อน IF เพื่อตัดเกรดIF(75>=80, "A", IF(75>=70, "B", IF(75>=60, "C", "F")))

75 ไม่ >= 80 (ข้าม A) → 75 >= 70 (TRUE) → คืนค่า "B" โดยไม่ตรวจเงื่อนไขที่เหลือ

การซ้อน IF แบบนี้ใช้กันบ่อยมากครับ แต่ถ้าซ้อนเยอะมาก (5-6 ชั้นขึ้นไป) แนะนำให้ใช้ IFS แทนจะอ่านง่ายกว่า 😅

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

ผลลัพธ์B
ตัวอย่างที่ 5: ใช้ AND รวมหลายเงื่อนไขIF(AND(25>=18, TRUE=TRUE), "ขับได้", "ขับไม่ได้")

AND ตรวจว่าเงื่อนไขทั้งหมดเป็น TRUE หรือไม่ (อายุ 25>=18 และมีใบขับขี่=TRUE) ทั้งคู่ TRUE จึงคืนค่า "ขับได้"

การใช้ IF + AND เป็นเทคนิคสำคัญมากเวลาต้องการให้ผ่านเงื่อนไขหลายอย่างพร้อมกัน ถ้าเงื่อนไขใดเงื่อนไขหนึ่งเป็น FALSE ทั้งหมดก็จะ FALSE ทันที 💡

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

ผลลัพธ์ขับได้
ตัวอย่างที่ 6: ใช้ OR ให้ผ่านถ้าตรงเงื่อนไขใดเงื่อนไขหนึ่งIF(OR(85>=80, 95>=90), "ได้รางวัล", "ไม่ได้รางวัล")

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

ตรงข้ามกับ AND ที่ต้องผ่านทุกเงื่อนไข OR จะผ่านแค่เงื่อนไขใดเงื่อนไขหนึ่งก็พอ ใช้เวลาต้องการให้มีทางเลือกในการผ่านเงื่อนไขครับ 😎

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

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

FAQs

ซ้อน IF ได้กี่ชั้น?+

Excel รองรับ IF ซ้อนได้สูงสุด 64 ชั้น แต่จริงๆ แล้วไม่ควรซ้อนเยอะขนาดนั้นหรอกครับ 😅

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

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

ปัญหานี้เจอบ่อยมากครับ 😭 สาเหตุหลักๆ มี 3 ข้อ:

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

ส่วนตัวผมชอบใช้ TRIM() กับข้อมูลก่อนเสมอเวลาเปรียบเทียบข้อความครับ

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

เจ๋งว่าถามครับ! มาดูความแตกต่างกัน:

– **IF** = ตัดสินใจ 2 ทาง (TRUE/FALSE) เหมาะกับเงื่อนไขง่ายๆ
– **IFS** = หลายเงื่อนไข แต่ละเงื่อนไขมีค่าคืนของตัวเอง ใช้แทน IF ซ้อนหลายชั้น อ่านง่ายกว่า
– **SWITCH** = เปรียบเทียบค่าเดียว กับหลายตัวเลือก เหมือน switch-case ในภาษาโปรแกรม

ตัวอย่าง: ถ้าต้องการตัดเกรด A/B/C/D/F แนะนำให้ใช้ IFS จะสั้นกว่าการซ้อน IF 😎

ต้องการหลีกเลี่ยงการซ้อน 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 ใช้ได้กับเปรียบเทียบวันที่ได้ไหม?+

ได้สบายเลยครับ! 😎

เช่น =IF(TODAY()>DueDate, "เลยกำหนด", "ยังไม่เลย") จะเช็คว่าวันนี้เลยกำหนดหรือยัง

ทำไมถึงใช้ได้? เพราะ Excel เก็บวันที่เป็นตัวเลข (Serial Number) อยู่เบื้องหลังครับ เช่น 1 มกราคม 2024 = 45292 ดังนั้นการเปรียบเทียบวันที่จึงเหมือนเปรียบเทียบตัวเลขธรรมดา

สามารถใช้ได้กับทุกตัวดำเนินการ: >, =,

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

ได้ครับ ใส่เครื่องหมายคำพูดว่าง "" เป็นค่าคืน

ตัวอย่าง: =IF(A1="", "", A1) ถ้า A1 ว่าง → คืนค่าว่าง ถ้าไม่ว่าง → คืนค่า A1

**เทคนิคพิเศษ:**
ถ้าต้องการซ่อน error ให้แสดงค่าว่างแทน ใช้ IFERROR จะสะดวกกว่า:
=IFERROR(A1/B1, "") ← ถ้าหารไม่ได้ (เช่น B1=0) จะแสดงค่าว่างแทนที่จะขึ้น #DIV/0!

ส่วนตัวผมใช้เทคนิคนี้บ่อยมากเวลาทำรายงานครับ เพราะดูสะอาดตากว่าขึ้น error เต็มหน้าจอ 😅

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ IF จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้IFLogical
Logical (11)
AND

AND ตรวจสอบเงื่อนไขได้สูงสุด 255 เงื่อนไข โดยจะคืนค่า TRUE ก็ต่อเมื่อ Logical ทุกตัว (logical1, logical2,…) ให้ผลเป็น TRUE ทั้งหมด
.
เรียกได้ว่าเป็นแบบ 'เข้มงวด' ที่ต้องผ่านทุกข้อถึงจะได้ TRUE ครับ ถ้าสักข้อเดียวเป็น FALSE… จบเลย 😅

FALSE

FALSE คืนค่าตรรกะ Boolean FALSE โดยตรง ซึ่งมีค่าเท่ากับ 0 ในการคำนวณทางคณิตศาสตร์
.
ที่เจ๋งคือทำให้สามารถนำไปใช้กับฟังก์ชันคำนวณได้โดยตรงโดยไม่ต้องแปลง มักใช้ร่วมกับ IF AND OR NOT และ IFERROR เพื่อควบคุม logic ของสูตรเงื่อนไข
.
ใน Excel คุณสามารถพิมพ์ FALSE โดยตรง (ไม่มีวงเล็บ) หรือเรียกเป็นฟังก์ชัน FALSE() ก็ได้ ผลลัพธ์เหมือนกันทุกประการ

TRUE

TRUE คืนค่าบูลีน TRUE ซึ่งมีค่าตัวเลขเท่ากับ 1 ใช้เป็น fundamental building block ในการสร้าง logical formulas ร่วมกับ IF, AND, OR, NOT
.
ใน Excel สมัยใหม่สามารถพิมพ์ TRUE โดยตรงได้โดยไม่ต้องใช้ =TRUE() ทั้งสองวิธีให้ผลเหมือนกัน
.
ที่เจ๋งคือฟังก์ชันนี้มีประโยชน์สำหรับการนับจำนวนเงื่อนไขที่เป็นจริง การแปลง Boolean เป็นตัวเลข และการสร้าง formula switches นะครับ

IFERROR

IFERROR ช่วยดักจับ Error ทุกประเภทที่เกิดขึ้นในสูตร (#N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, #NULL!) แล้วเปลี่ยนเป็นค่าที่เราต้องการแทน
.
ที่เจ๋งคือมันช่วยให้รายงานและ Dashboard ดูสะอาด ไม่มี Error แสดงให้ผู้ใช้งานเห็น โดยถ้าสูตรไม่มี Error ก็จะ return ผลลัพธ์ปกติ
.
ส่วนตัวผมคิดว่าฟังก์ชันนี้เป็น "ตัวช่วยมหาเทพ" สำหรับคนทำรายงานเลยครับ 😎

IFNA

IFNA เป็นฟังก์ชันที่ช่วยจัดการ #N/A errors โดยแทนค่าเป็นข้อความหรือค่าอื่นที่คุณกำหนด เหมาะสำหรับการค้นหาข้อมูลที่อาจไม่พบผลลัพธ์

IFS

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

LET

LET ช่วยให้คุณกำหนดชื่อตัวแปร (Named Variables) ภายในสูตร Excel เพื่อเก็บค่าหรือผลลัพธ์การคำนวณ จากนั้นนำชื่อเหล่านั้นมาใช้ซ้ำในสูตรเดียวกัน
.
ทำให้สูตรที่ซับซ้อนอ่านง่ายขึ้นเยอะ ลดข้อผิดพลาดจากการเขียนซ้ำ และเพิ่มความเร็วเพราะแต่ละการคำนวณจะทำงานเพียงครั้งเดียว ไม่ว่าจะถูกอ้างอิงกี่ครั้งก็ตาม

MAKEARRAY

MAKEARRAY สร้าง Dynamic Array ตามขนาดที่กำหนด (rows × cols) โดยใช้ LAMBDA function คำนวณค่าในแต่ละเซลล์ตามตำแหน่ง row และ column index (เริ่มที่ 1) ต่างจาก SEQUENCE ที่สร้างเฉพาะตัวเลขเรียงลำดับ MAKEARRAY สามารถสร้างข้อมูลได้หลากหลายรูปแบบตามการคำนวณที่กำหนดใน LAMBDA เช่น ตารางสูตรคูณ matrix ทางคณิตศาสตร์ pattern ข้อความ หรือค่าสุ่ม เหมาะสำหรับสร้าง dataset ขนาดใหญ่ที่มีรูปแบบเฉพาะ หรือ lookup table แบบ dynamic โดย LAMBDA จะถูกเรียกทำงานสำหรับทุกเซลล์ใน array ผลลัพธ์ ทำให้สร้างข้อมูลจำนวนมากได้อย่างรวดเร็วด้วยสูตรเดียว

MAP

MAP ส่งค่าทีละ element จาก Array หนึ่งหรือหลายตัวเข้าไปประมวลผลใน LAMBDA แล้วคืน Array ผลลัพธ์ที่มีขนาดเท่ากับ input array ต้นฉบับ เหมาะสำหรับ element-wise operations เช่น การแปลงค่าทุกตัว การตรวจสอบเงื่อนไขทีละเซลล์ หรือการคำนวณจากหลาย Array พร้อมกัน ต่างจาก BYROW/BYCOL ที่ส่งทั้งแถวหรือทั้งคอลัมน์ MAP จะส่งเฉพาะค่าเดี่ยวๆ ทีละตำแหน่ง

NOT

NOT ใช้กลับค่าตรรกะจาก TRUE เป็น FALSE และจาก FALSE เป็น TRUE เอาไว้เขียนเงื่อนไขแบบ 'ไม่ใช่' หรือ 'ไม่เข้าเงื่อนไข' โดยเฉพาะตอนสูตรซับซ้อนจนเขียนแบบเทียบตรงๆ ด้วย ไม่ไหว เช่น กรองข้อมูลไม่ซ้ำ หรือเช็คว่าค่าไม่หลุดช่วงที่กำหนด

OR

OR คือฟังก์ชันตรรกศาสตร์ที่ตรวจสอบเงื่อนไขได้สูงสุด 255 ข้อ และจะคืนค่า TRUE ถ้ามี 'เงื่อนไขใดเงื่อนไขหนึ่ง' เป็นจริง เป็นเครื่องมือจำเป็นสำหรับการสร้างเงื่อนไขที่ยืดหยุ่น

Engineering (4)
BITXOR

เปรียบเทียบบิตของตัวเลขสองจำนวน ถ้าบิตต่างกันได้ 1 ถ้าเหมือนได้ 0 ใช้สำหรับงานจัดการบิต ตรวจสอบความต่าง และ toggle ค่า

CONVERT

แปลงตัวเลขจากหน่วยวัดหนึ่งไปยังอีกหน่วยหนึ่ง เช่น เมตร เป็น ฟุต, องศาเซลเซียส เป็น ฟาเรนไฮต์, กิโลกรัม เป็น ปอนด์

DELTA

ทดสอบว่าตัวเลขสองจำนวนเท่ากันหรือไม่ โดยคืนค่า 1 ถ้าเท่ากัน และ 0 ถ้าไม่เท่ากัน (Kronecker Delta Function)

GESTEP

ตรวจสอบว่าตัวเลขมากกว่าหรือเท่ากับค่าเกณฑ์หรือไม่ คืนค่า 1 (จริง) หรือ 0 (เท็จ)

Information (3)
ISEVEN

ISEVEN ตรวจสอบว่าค่าในเซลล์เป็นเลขคู่หรือไม่ และส่งกลับ TRUE (ถ้าเป็นเลขคู่) หรือ FALSE (ถ้าเป็นเลขคี่) ใช้ได้กับตัวเลขที่เป็นจำนวนเต็มเท่านั้น

ISODD

ตรวจสอบว่าค่าที่ระบุเป็นเลขคี่หรือไม่ ส่งกลับ TRUE ถ้าเป็นคี่ FALSE ถ้าเป็นคู่

NA

ฟังก์ชัน NA() ใช้สำหรับส่งคืนค่าความผิดพลาด #N/A ซึ่งหมายถึง 'ค่าไม่พร้อมใช้งาน' (No Value Available) โดยไม่มีอาร์กิวเมนต์ใดๆ ใช้เพื่อทำเครื่องหมายเซลล์ที่ข้อมูลขาดหายไปหรือเพื่อหลีกเลี่ยงการรวมเซลล์ว่างในการคำนวณ

Statistical (2)
COUNTBLANK

COUNTBLANK นับจำนวนเซลล์ว่างในช่วงข้อมูล เหมาะสำหรับตรวจสอบความสมบูรณ์ของข้อมูล

MAXIFS

MAXIFS ใช้หาค่าสูงสุดจากช่วงข้อมูลที่ตรงตามเงื่อนไขหนึ่งหรือมากกว่า แตกต่างจาก MAX ที่หาเพียงค่าสูงสุดทั้งหมด MAXIFS มีความยืดหยุ่นในการกรองข้อมูลก่อนหาค่าสูงสุด

Text (2)
DETECTLANGUAGE

ฟังก์ชัน Microsoft 365 ที่ตรวจจับภาษาของข้อความในเซลล์ แล้วคืนค่าเป็นรหัสภาษา (เช่น "th", "en", "es") ใช้คู่กับ TRANSLATE เพื่อแปลภาษาแบบอัตโนมัติ

REGEXTEST

REGEXTEST เป็นฟังก์ชันสำหรับทดสอบว่าข้อความตรงกับรูปแบบ Regular Expression ที่กำหนดหรือไม่ คืนค่า TRUE หรือ FALSE เหมาะสำหรับการตรวจสอบความถูกต้องของข้อมูล (Validation) เช่น ที่อยู่อีเมล เบอร์โทรศัพท์ หรือรูปแบบข้อมูลอื่น ๆ

Lookup and reference (1)
CHOOSE

CHOOSE เลือกค่าจากรายการค่าตามหมายเลขลำดับที่ระบุ เป็นเหมือนการเลือกรายการจากเมนู ส่งคืนค่าที่ตำแหน่งที่กำหนด มีประโยชน์ในการสร้างสูตรแบบเลือกตามเงื่อนไข

Math and trigonometry (1)
SIGN

SIGN ใช้ตรวจสอบเครื่องหมายของตัวเลข โดยคืนค่า 1 (บวก), 0 (ศูนย์), หรือ -1 (ลบ) สะดวกมากเวลาต้องแยกความแตกต่างของตัวเลข

ดูฟังก์ชันที่เกี่ยวข้องทั้งหมด (26) →
Logical (2)
SWITCH

SWITCH ประเมินนิพจน์หรือค่าหนึ่งค่า แล้วเปรียบเทียบกับรายการค่าที่กำหนดตามลำดับ เมื่อพบค่าที่ตรงกันจะส่งคืนผลลัพธ์ที่เชื่อมโยงทันที หากไม่ตรงกับค่าใดเลยสามารถกำหนด default value ได้ เหมาะสำหรับแทนที่ nested IF หลายชั้นด้วยไวยากรณ์ที่อ่านง่ายกว่ามาก

XOR

ส่งกลับ TRUE หากจำนวนเงื่อนไขที่เป็นจริงเป็นจำนวนคี่ มิฉะนั้นส่งกลับ FALSE

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่