---
title: COALESCE – คืนค่าแรกที่ไม่เป็น BLANK()
url: https://www.thepexcel.com/functions/dax/logical/coalesce-dax/
type: function-explainer
program: DAX
syntax: "COALESCE(<expression1>, <expression2>[, <expression3>, ...])"
date: 2025-12-13
updated: 2025-12-24
scores:
  popularity: 6
  difficulty: 3
  usefulness: 6
---

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

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

## คำอธิบาย

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

## Syntax

```excel
COALESCE(&lt;expression1&gt;, &lt;expression2&gt;[, &lt;expression3&gt;, ...])
```

**Variant**

```excel
COALESCE(&lt;expression1&gt;, &lt;expression2&gt;)
```

คืน expression1 ถ้าไม่เป็น BLANK() มิฉะนั้นคืน expression2

**Variant**

```excel
COALESCE(&lt;expression1&gt;, &lt;expression2&gt;, &lt;expression3&gt;, ...)
```

ไล่เลือกค่าตามลำดับจนกว่าจะเจอค่าที่ไม่เป็น BLANK()

## Arguments

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

## เคสการใช้งาน

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

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

_เหมาะกับ:_ blank-to-zero

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

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

_เหมาะกับ:_ fallback-chain

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: แทน BLANK ด้วย 0

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

**ผลลัพธ์:** `ถ้า [Total Sales] เป็น BLANK() จะได้ 0`

เหมาะกับการแสดงผลในตารางหรือการ์ด เพื่อไม่ให้มีช่องว่าง เมื่อไม่มีข้อมูลในช่วงเวลาหรือกลุ่มที่เลือก ยังอ่านง่ายขึ้นด้วย

### 2. ตัวอย่างที่ 2: เลือกค่าตามลำดับ Actual → Budget → 0

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

**ผลลัพธ์:** `คืนค่าแรกที่หาได้ตามลำดับ`

ถ้ามีค่า Actual จะใช้ Actual ทันที ถ้าไม่มี (BLANK) ค่อยใช้ Budget และถ้า Budget เป็น BLANK ด้วยจึงใช้ 0 เป็นค่าเริ่มต้น (fallback)

### 3. ตัวอย่างที่ 3: ทำข้อความ fallback กับ SELECTEDVALUE

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

**ผลลัพธ์:** `คืนชื่อ Category เมื่อมีค่าเดียว มิฉะนั้นคืน "(หลายค่า)"`

SELECTEDVALUE คืน BLANK เมื่อมีการเลือกหลายค่า COALESCE จึงช่วยให้สามารถตั้งข้อความสำรองได้อย่างสะอาด

### 4. ตัวอย่างที่ 4: ใช้กับเงื่อนไข Multiple Criteria

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

**ผลลัพธ์:** `คืนชื่อผู้จัดการจากตาราง Employee หรือ Department หรือข้อความสำรอง`

ใช้ RELATED เพื่อดึงค่าจากตารางที่เชื่อมโยง ถ้าลิงก์แรกไม่มีข้อมูลจะไปใช้วิธีที่สอง นี่คือ context transition - COALESCE ทำงานได้ดีเพราะ RELATED อาจคืน BLANK

### 5. ตัวอย่างที่ 5: ทำให้การรวมตัวเลขง่ายขึ้น

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

**ผลลัพธ์:** `รวมยอดขายทั้งหมด แต่ใช้ 0 แทน BLANK`

กับ SUMX และ ALL เมื่อมี Region ที่ไม่มียอดขาย [Regional Sales] จะเป็น BLANK COALESCE 0 ช่วยให้การรวมค่านับขาดน้อยลง

## หมายเหตุเพิ่มเติม

- ใช้ COALESCE เป็นตัวจบท้ายในสูตร fallback chain เพื่อให้ค่าเริ่มต้นแน่นอน เช่น =COALESCE([Actual], [Forecast], [Budget], 0)

- เมื่อทำงานกับ RELATED ถ้า relationship อาจ break ให้ใช้ COALESCE ตามทันที เพื่อให้มีค่าแสดงแทน BLANK

- ระวังการผสมชนิดข้อมูล อาร์กิวเมนต์ต้องเข้ากันได้ ไม่เช่นนั้น DAX อาจแปลงค่าในแบบที่ไม่คาดคิด

- COALESCE ทำงานได้ดีใน Calculated Column, Measure, และ Visual Calculation ใช้สำหรับลดช่องว่างในรายงาน

- ถ้าต้อง fallback หลายระดับ COALESCE สั้นกว่า nested IF มากและอ่านง่ายกว่า

## คำถามที่พบบ่อย

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

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

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

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

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

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

**Q: COALESCE มี filter context ไหม?**

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

## ฟังก์ชันที่เกี่ยวข้อง

- blank
- selectedvalue
- [IF – ตรวจสอบเงื่อนไขและคืนค่าตามผลลัพธ์ TRUE/FALSE](https://www.thepexcel.com/functions/dax/logical/if-dax/)

## แหล่งข้อมูลเพิ่มเติม

- [DAX Guide: COALESCE](https://dax.guide/coalesce/) _(guide)_
- [Microsoft Learn: COALESCE](https://learn.microsoft.com/en-us/dax/coalesce-function-dax) _(official)_

---

_Source: [https://www.thepexcel.com/functions/dax/logical/coalesce-dax/](https://www.thepexcel.com/functions/dax/logical/coalesce-dax/)_
