Thep Excel

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

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

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

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
LogicalTest logical เงื่อนไขที่ต้องการทดสอบ (TRUE/FALSE)
ValueIfTrue expression ค่าที่คืนเมื่อ LogicalTest เป็น TRUE
[ValueIfFalse]ไม่บังคับ expression BLANK() ค่าที่คืนเมื่อ LogicalTest เป็น FALSE

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

Additional Notes

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

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

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: โครงสร้างพื้นฐานเหมือน IFผลลัพธ์ = IF.EAGER([Flag] = 1, "ใช่", "ไม่ใช่")

รูปแบบการเขียนเหมือน IF แต่ควรระวังเรื่อง eager evaluation

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

ผลลัพธ์คืนข้อความตามเงื่อนไข
ตัวอย่างที่ 2: ระวังกรณีอีกแขนงอาจเกิด errorตัวอย่างที่ควรระวัง = IF.EAGER( [Denominator] = 0, BLANK(), [Numerator] / [Denominator] )

ถ้าคุณต้องการหลีกเลี่ยงการประเมินแขนงที่อาจ error ควรใช้ IF หรือ DIVIDE แทน

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

ผลลัพธ์อาจยังเกิด error ได้ ถ้าระบบประเมินแขนงการหารด้วย
ตัวอย่างที่ 3: ใช้ IF ปกติเมื่ออยากให้ปลอดภัยกว่าปลอดภัยกว่า = IF( [Denominator] = 0, BLANK(), [Numerator] / [Denominator] )

IF มักเหมาะกว่าในงานทั่วไป โดยเฉพาะเมื่ออีกแขนงคำนวณหนักหรือมีโอกาส error

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

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

FAQs

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

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

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

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

Resources & Related

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

ฟังก์ชันนี้IF.EAGERLogical
Logical (4)
FALSE

FALSE คืนค่าตรรกะ FALSE ใช้เป็นค่าคงที่ใน DAX สำหรับสร้างตรรกะและเงื่อนไข เช่น ใช้กับ IF หรือใช้เป็นค่าตั้งต้นในตัวแปร

IF

IF เป็นฟังก์ชันตรรกะพื้นฐานที่สำคัญที่สุดใน DAX ใช้สำหรับตรวจสอบเงื่อนไข (logical test) แล้วคืนค่าที่แตกต่างกันตามผลลัพธ์ว่าเป็นจริง (TRUE) หรือเท็จ (FALSE) สามารถใช้ได้ทั้งในบริบท calculated column, measure, calculated table และ visual calculation ซึ่งทำให้มีความยืดหยุ่นสูง คืนค่าเป็น scalar value ได้ทุกประเภท ไม่ว่าจะเป็นตัวเลข ข้อความ วันที่ หรือค่า boolean ถ้าไม่ระบุค่าสำหรับกรณีเท็จ (value_if_false) จะคืน BLANK() โดยอัตโนมัติ มีคุณสมบัติพิเศษคือ lazy evaluation behavior ที่ประมวลผลเฉพาะเส้นทาง (branch) ที่ถูกเลือกเท่านั้น ทำให้มีประสิทธิภาพในการทำงานที่ดี แตกต่างจาก Excel IF อย่างชัดเจนตรงที่ใช้รูปแบบอ้างอิงแบบ Table[Column] ทำงานภายใต้ filter context และแยกความแตกต่างระหว่าง BLANK กับ 0 อย่างเข้มงวด

IFERROR

IFERROR ใช้ดักจับข้อผิดพลาดในนิพจน์: ถ้า Value เกิด error จะคืนค่า ValueIfError แทน ถ้าไม่เกิด error จะคืนค่าของ Value เดิม เหมาะสำหรับการแปลงชนิดข้อมูล การหารที่อาจเป็นศูนย์ หรือ measure ที่ไม่เสถียร

TRUE

TRUE คืนค่าตรรกะ TRUE ใช้เป็นค่าคงที่ใน DAX เช่น ใช้กับ SWITCH(TRUE()) เพื่อจัดการเงื่อนไขหลายระดับ หรือใช้ร่วมกับ IF/AND/OR ในการสร้างตรรกะ

Other (1)
BLANK

BLANK คืนค่าว่างเปล่า (Empty Value) ในDAX ซึ่งแตกต่างจาก 0 หรือ "" โดยใช้สำหรับระบุว่าไม่มีข้อมูล มักใช้ใน IF เพื่อซ่อนผลลัพธ์ที่ไม่ต้องการ

Comments

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