Thep Excel

COALESCE – คืนค่าแรกที่ไม่เป็น BLANK()

COALESCE คืนค่าแรกที่ไม่เป็น BLANK() จากหลายอาร์กิวเมนต์ เหมาะกับการกำหนดค่าเริ่มต้น (fallback) เช่น ใช้ค่า 0 เมื่อ Measure เป็น BLANK หรือเลือกค่าจากหลายแหล่งตามลำดับความสำคัญ

=COALESCE(<expression1>, <expression2>[, <expression3>, ...])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
6/10

Difficulty
3/10

Usefulness
6/10

Syntax & Arguments

=COALESCE(<expression1>, <expression2>[, <expression3>, ...])

Argument Type Required Default Description
expression1 scalar Yes นิพจน์ตัวแรกที่ต้องการตรวจสอบ ถ้าไม่เป็น BLANK() จะถูกคืนทันที
expression2 scalar Yes นิพจน์สำรอง ถ้า expression1 เป็น BLANK() จะประเมินและเลือกตัวนี้แทน
expression3 scalar Optional ไม่มีนิพจน์สำรองเพิ่มเติม นิพจน์สำรองเพิ่มเติม (ถ้ามี) สามารถใส่ได้หลายตัวตามต้องการ

How it works

แทนค่า BLANK ด้วย 0

ใช้เมื่ออยากให้ตาราง/การ์ดแสดง 0 แทนช่องว่าง เพื่ออ่านง่ายและนำไปคำนวณต่อได้

เลือกค่าจากหลายแหล่งตามลำดับความสำคัญ

เช่น ใช้ค่า Actual ก่อน ถ้าไม่มีค่อยใช้ Budget และถ้ายังไม่มีให้เป็น 0

Examples

ตัวอย่างที่ 1: แทน BLANK ด้วย 0
Sales (Zero) = COALESCE([Total Sales], 0)
เหมาะกับการแสดงผลในตารางหรือการ์ด เพื่อไม่ให้มีช่องว่าง เมื่อไม่มีข้อมูลในช่วงเวลาหรือกลุ่มที่เลือก ยังอ่านง่ายขึ้นด้วย
DAX Formula:

=Sales (Zero) =
COALESCE([Total Sales], 0)

Result:

ถ้า [Total Sales] เป็น BLANK() จะได้ 0

ตัวอย่างที่ 2: เลือกค่าตามลำดับ Actual → Budget → 0
Value = COALESCE([Actual], [Budget], 0)
ถ้ามีค่า Actual จะใช้ Actual ทันที ถ้าไม่มี (BLANK) ค่อยใช้ Budget และถ้า Budget เป็น BLANK ด้วยจึงใช้ 0 เป็นค่าเริ่มต้น (fallback)
DAX Formula:

Value =
COALESCE([Actual], [Budget], 0)

Result:

คืนค่าแรกที่หาได้ตามลำดับ

ตัวอย่างที่ 3: ทำข้อความ fallback กับ SELECTEDVALUE
Selected Label = COALESCE(SELECTEDVALUE(Product[Category]), "(หลายค่า)")
SELECTEDVALUE คืน BLANK เมื่อมีการเลือกหลายค่า COALESCE จึงช่วยให้สามารถตั้งข้อความสำรองได้อย่างสะอาด
DAX Formula:

Selected Label =
COALESCE(SELECTEDVALUE(Product[Category]), "(หลายค่า)")

Result:

คืนชื่อ Category เมื่อมีค่าเดียว มิฉะนั้นคืน "(หลายค่า)"

ตัวอย่างที่ 4: ใช้กับเงื่อนไข Multiple Criteria
Manager Name = COALESCE( RELATED(Employee[Manager]), RELATED(Department[DefaultManager]), "(ไม่มีผู้จัดการ)" )
ใช้ RELATED เพื่อดึงค่าจากตารางที่เชื่อมโยง ถ้าลิงก์แรกไม่มีข้อมูลจะไปใช้วิธีที่สอง นี่คือ context transition – COALESCE ทำงานได้ดีเพราะ RELATED อาจคืน BLANK
DAX Formula:

Manager Name =
COALESCE(
  RELATED(Employee[Manager]),
  RELATED(Department[DefaultManager]),
  "(ไม่มีผู้จัดการ)"
)

Result:

คืนชื่อผู้จัดการจากตาราง Employee หรือ Department หรือข้อความสำรอง

ตัวอย่างที่ 5: ทำให้การรวมตัวเลขง่ายขึ้น
Total All Regions = SUMX( ALL(Sales[Region]), COALESCE([Regional Sales], 0) )
กับ SUMX และ ALL เมื่อมี Region ที่ไม่มียอดขาย [Regional Sales] จะเป็น BLANK COALESCE 0 ช่วยให้การรวมค่านับขาดน้อยลง
DAX Formula:

Total All Regions =
SUMX(
  ALL(Sales[Region]),
  COALESCE([Regional Sales], 0)
)

Result:

รวมยอดขายทั้งหมด แต่ใช้ 0 แทน BLANK

FAQs

COALESCE ต่างจาก IF ที่เช็ค BLANK อย่างไร?

COALESCE เขียนสั้นและชัดเจนกว่าเมื่อต้อง fallback หลายระดับ เช่น =COALESCE(A,B,C) vs =IF(ISBLANK(A),IF(ISBLANK(B),C,B),A) ส่วน IF เหมาะกับตรรกะที่ซับซ้อนกว่าหรือเงื่อนไขที่ไม่ใช่ BLANK

COALESCE คืนค่าแบบไหนได้ไหม (ตัวเลข/ข้อความ/วันที่)?

คืนค่าแบบ scalar ตามชนิดของนิพจน์ที่เป็น non-BLANK อาร์กิวเมนต์ต้องเข้ากันได้ (compatible) ถ้ามีชนิดต่างกัน DAX จะพยายามแปลงค่าให้ตรงกัน

ถ้าอาร์กิวเมนต์ทั้งหมดเป็น BLANK จะเกิดอะไร?

COALESCE คืน BLANK() ทั้งหมด ดังนั้นถ้าต้องการค่าเริ่มต้นแน่นอน ให้ใส่ค่านั้นเป็นอาร์กิวเมนต์สุดท้าย

COALESCE มี filter context ไหม?

ใช่ COALESCE ประเมินอาร์กิวเมนต์ในบริบท (context) เดียวกับที่เรียก ถ้าเขียนใน Measure COALESCE จะใช้ filter context ปัจจุบัน ส่วนถ้า COALESCE อ้างอิง CALCULATE มันจะ transition context ตามปกติ

Resources & Related

Additional Notes

COALESCE ใช้สำหรับเลือก “ค่าแรกที่ไม่เป็น BLANK()” จากรายการอาร์กิวเมนต์ที่ส่งเข้าไป หากประเมินอาร์กิวเมนต์ทั้งหมดแล้วกลับมาเป็น BLANK() ฟังก์ชันจะคืน BLANK()

ที่เจ๋งคือ COALESCE ช่วยให้ DAX code อ่านง่ายกว่า nested IF เมื่อต้องตั้งค่าหลายระดับ (fallback chain) เช่น “ใช้ Actual ถ้ามี ไม่มีก็ใช้ Budget ไม่มีก็ใช้ 0”

ส่วนตัวผม COALESCE ยังมีประโยชน์เพื่อลดปัญหาช่องว่างในรายงาน เพราะ BLANK ในตาราง/การ์ดอาจดูไม่มีข้อมูล แต่บ่อยครั้งแค่ค่าไม่ถูกคำนวณ ดังนั้นการแสดง 0 หรือข้อความแทน BLANK จึงทำให้รายงานชัดเจนมากขึ้น

Leave a Reply

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