Thep Excel

IF.EAGER – IF แบบประเมินค่าทั้งสองแขนง (eager)

IF.EAGER ทำงานเหมือน IF แต่ใช้แผน eager ที่อาจประเมินทั้ง value_if_true และ value_if_false ทำให้ควรระวังเรื่อง performance และกรณีที่อีกแขนงอาจเกิด error แม้เงื่อนไขจะไม่เลือกแขนงนั้น

=IF.EAGER(<LogicalTest>, <ValueIfTrue>[, <ValueIfFalse>])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
3/10

Difficulty
4/10

Usefulness
3/10

Syntax & Arguments

=IF.EAGER(<LogicalTest>, <ValueIfTrue>[, <ValueIfFalse>])

Argument Type Required Default Description
LogicalTest logical Yes เงื่อนไขที่ต้องการทดสอบ (TRUE/FALSE)
ValueIfTrue expression Yes ค่าที่คืนเมื่อ LogicalTest เป็น TRUE
ValueIfFalse expression Optional BLANK() ค่าที่คืนเมื่อ LogicalTest เป็น FALSE

How it works

ทดสอบ/ดีบักนิพจน์ที่อยากให้ถูกประเมินแน่นอน

บางกรณีอยากให้ทั้งสองฝั่งถูกคำนวณเพื่อดูผล/ตรวจคุณภาพ

แทน IF ในบางรูปแบบของคิวรี

ใช้เมื่อคุณตั้งใจให้ทั้งสองฝั่งถูกประเมิน (ต้องเข้าใจผลกระทบก่อน)

Examples

ตัวอย่างที่ 1: โครงสร้างพื้นฐานเหมือน IF
ผลลัพธ์ = IF.EAGER([Flag] = 1, "ใช่", "ไม่ใช่")
รูปแบบการเขียนเหมือน IF แต่ควรระวังเรื่อง eager evaluation
DAX Formula:

ผลลัพธ์ = IF.EAGER([Flag] = 1, "ใช่", "ไม่ใช่")

Result:

คืนข้อความตามเงื่อนไข

ตัวอย่างที่ 2: ระวังกรณีอีกแขนงอาจเกิด error
ตัวอย่างที่ควรระวัง = IF.EAGER( [Denominator] = 0, BLANK(), [Numerator] / [Denominator] )
ถ้าคุณต้องการหลีกเลี่ยงการประเมินแขนงที่อาจ error ควรใช้ IF หรือ DIVIDE แทน
DAX Formula:

ตัวอย่างที่ควรระวัง =
IF.EAGER(
    [Denominator] = 0,
    BLANK(),
    [Numerator] / [Denominator]
)

Result:

อาจยังเกิด error ได้ ถ้าระบบประเมินแขนงการหารด้วย

ตัวอย่างที่ 3: ใช้ IF ปกติเมื่ออยากให้ปลอดภัยกว่า
ปลอดภัยกว่า = IF( [Denominator] = 0, BLANK(), [Numerator] / [Denominator] )
IF มักเหมาะกว่าในงานทั่วไป โดยเฉพาะเมื่ออีกแขนงคำนวณหนักหรือมีโอกาส error
DAX Formula:

ปลอดภัยกว่า =
IF(
    [Denominator] = 0,
    BLANK(),
    [Numerator] / [Denominator]
)

Result:

โดยทั่วไปอ่านง่ายและคุมความเสี่ยงเรื่อง eager evaluation ได้ดีกว่า

FAQs

ทำไมต้องมี IF.EAGER ในเมื่อมี IF อยู่แล้ว?

IF.EAGER ให้พฤติกรรมการประเมินแบบ eager ที่บางครั้งช่วยรูปแบบคิวรี/สถานการณ์เฉพาะ แต่ต้องใช้ด้วยความเข้าใจ เพราะอาจทำให้ทั้งสองแขนงถูกประเมิน

ถ้าต้องการหลีกเลี่ยงหารด้วยศูนย์ควรใช้อะไร?

แนะนำ DIVIDE เพราะออกแบบมาสำหรับการหารและการจัดการตัวหารเป็นศูนย์โดยตรง หรือใช้ IF ปกติร่วมกับเงื่อนไขก็ได้

Resources & Related

Additional Notes

IF.EAGER ทำงานคล้าย IF: ตรวจเงื่อนไขแล้วคืนค่าตามกรณีจริง/เท็จ แต่ต่างกันตรงที่ IF.EAGER มีแนวโน้มจะใช้แผนการทำงานแบบ eager ซึ่งอาจทำให้ระบบประเมินค่าทั้งแขนงจริงและแขนงเท็จ (ขึ้นกับบริบทและแผนการคิวรี)

ดังนั้น IF.EAGER อาจไม่เหมาะกับกรณีที่คุณหวัง “short-circuit” เพื่อหลีกเลี่ยง error หรือหลีกเลี่ยงการคำนวณหนักในแขนงที่ไม่ได้ถูกเลือก หากต้องการพฤติกรรมแบบนั้น ให้ใช้ IF ปกติ

Leave a Reply

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