---
title: CONCATENATE – ต่อข้อความ 2 ส่วน
url: https://www.thepexcel.com/functions/dax/text/concatenate-dax/
type: function-explainer
program: DAX
syntax: "CONCATENATE(<text1>, <text2>)"
date: 2025-12-13
updated: 2025-12-24
scores:
  popularity: 7
  difficulty: 2
  usefulness: 7
---

# CONCATENATE – ต่อข้อความ 2 ส่วน

> CONCATENATE ต่อข้อความ 2 ค่าให้เป็นสตริงเดียว เหมาะกับการทำ label หรือรวมข้อความจาก 2 แหล่งในบริบทปั

## คำอธิบาย

CONCATENATE ต่อข้อความ 2 ค่าให้เป็นสตริงเดียว เหมาะกับการทำ label หรือรวมข้อความจาก 2 แหล่งในบริบทปัจจุบัน

## Syntax

```excel
CONCATENATE(&lt;text1&gt;, &lt;text2&gt;)
```

**Variant**

```excel
CONCATENATE(&lt;text1&gt;, &lt;text2&gt;)
```

ต่อข้อความ 2 ค่า แล้วคืนผลเป็นสตริง

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| text1 | Yes | scalar |  | ข้อความ/ค่าสเกลาร์ตัวแรก สามารถเป็นข้อความ ตัวเลข boolean หรือ reference ไปยังคอลัมน์ |
| text2 | Yes | scalar |  | ข้อความ/ค่าสเกลาร์ตัวที่สอง สามารถเป็นข้อความ ตัวเลข boolean หรือ reference ไปยังคอลัมน์ |

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

### สร้าง label จาก 2 ฟิลด์

เช่น รหัส + ชื่อ เพื่อใช้ในตารางหรือการ์ด

_เหมาะกับ:_ label-two-fields

### ประกอบข้อความในมาตรวัด

เช่น “ยอดขาย: 1,234” (เมื่อเตรียมสตริงส่วนเลขไว้แล้ว)

_เหมาะกับ:_ compose-text

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ต่อรหัสและชื่อสินค้า (Calculated Column)

```excel
Product Label =
CONCATENATE(
    Products[ProductCode],
    Products[ProductName]
)
```

**ผลลัพธ์:** `สตริงที่เป็นการต่อ 2 คอลัมน์เข้าด้วยกัน เช่น "ABC123Widget"`

ใช้ใน Calculated Column ของตารางผลิตภัณฑ์ ต่อรหัสและชื่อโดยตรง ได้สตริงต่อเนื่อง

### 2. ตัวอย่างที่ 2: ต่อข้อความกับสัญลักษณ์คั่น

```excel
Product Label (Dash) =
CONCATENATE(
    Products[ProductCode],
    CONCATENATE(" - ", Products[ProductName])
)
```

**ผลลัพธ์:** `สตริงลักษณะ "ABC123 - Widget"`

เนื่องจาก CONCATENATE รับ 2 ค่า จึงต้อง nest เมื่อต้องการคั่นด้วยสัญลักษณ์ ทางเลือกที่ดีกว่าคือใช้เครื่องหมาย & เช่น Products[ProductCode] & " - " & Products[ProductName]

### 3. ตัวอย่างที่ 3: ต่อข้อความในมาตรวัด

```excel
Title Text =
CONCATENATE("ยอดขาย ", "(รวม)")
```

**ผลลัพธ์:** `สตริง "ยอดขาย (รวม)"`

ใช้ต่อข้อความลิตเท่านั้นในมาตรวัด เหมาะสำหรับป้ายกำกับและหัวข้อ

### 4. ตัวอย่างที่ 4: ต่อค่าตัวเลขกับข้อความ

```excel
Sales Info =
CONCATENATE(
    "ยอดขาย: ",
    CONCATENATE(FORMAT([Total Sales], "$#,##0"), " USD")
)
```

**ผลลัพธ์:** `สตริง "ยอดขาย: $1,250 USD"`

ตัวเลขถูกแปลงเป็นข้อความโดยอัตโนมัติ เมื่อใช้กับ FORMAT เพื่อจัดรูปแบบตัวเลขก่อนต่อ

### 5. ตัวอย่างที่ 5: ต่อเมื่อมีค่า BLANK (ตัวอย่างปัญหา)

```excel
// ❌ ทำให้ปัญหา
Full Name (Bad) =
CONCATENATE(
    Sales[FirstName],
    CONCATENATE(" ", Sales[LastName])
)

// ✅ แก้ปัญหา ใช้ IF
Full Name (Good) =
IF(
    ISBLANK(Sales[FirstName]),
    Sales[LastName],
    IF(
        ISBLANK(Sales[LastName]),
        Sales[FirstName],
        CONCATENATE(Sales[FirstName], CONCATENATE(" ", Sales[LastName]))
    )
)
```

**ผลลัพธ์:** `Version ✅ แสดง "John Smith" หรือ "John" หรือ "Smith" (ไม่มีช่องว่างเปล่า)`

ถ้า FirstName หรือ LastName เป็น BLANK version ❌ จะแสดง " Smith" หรือ "John " (ซ้ายหรือขวามี space ว่าง) เพราะ CONCATENATE ไม่ตัดค่า BLANK อัตโนมัติ

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

- ใช้ & operator แทน CONCATENATE เมื่อต้องต่อหลายค่า เพราะง่ายและเร็วกว่า: [Col1] & " - " & [Col2]

- เมื่อต่อตัวเลข ให้ใช้ FORMAT ก่อนเสมอเพื่อจัดรูปแบบ: FORMAT([Value], "#,##0.00")

- ตรวจสอบค่า BLANK ก่อนต่อ โดยใช้ IF หรือ COALESCE เพื่อหลีกเลี่ยง space ว่างติดค้าง

- CONCATENATE รับ 2 ค่าเท่านั้น ถ้าต้องต่อจากแถวทั้งหมดของตาราง ให้ใช้ CONCATENATEX (iterator version)

- ใน DirectQuery mode CONCATENATE ไม่ทำงานในคอลัมน์หรือ RLS rules ต้องสร้างคอลัมน์ใน source query แทน

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

**Q: CONCATENATE รับได้กี่ค่า?**

DAX CONCATENATE รับ 2 ค่าเท่านั้น (ต่างจาก Excel ที่รับได้ถึง 255 ค่า) ถ้าต้องต่อหลายค่า ให้ใช้ & operator เช่น [Col1] & [Col2] & [Col3] หรือใช้ CONCATENATEX ถ้าต้องต่อจากหลายแถว

**Q: ใช้ CONCATENATE ในไหนได้บ้าง?**

ใช้ได้ใน Calculated Column, Measure, และ Calculated Table ส่วน DirectQuery mode ไม่รองรับ CONCATENATE ในคอลัมน์หรือ RLS rules

**Q: CONCATENATE กับ & operator ต่างกันไหม?**

ไม่ต่างมากนัก & operator เร็วกว่า และอ่านง่ายกว่า เมื่อต้องต่อหลายค่า CONCATENATE ต้อง nest ซ้อนกันเหมือน CONCATENATE(CONCATENATE([Col1], [Col2]), [Col3]) ส่วน & ได้เลย [Col1] & [Col2] & [Col3]

**Q: CONCATENATE ตัดค่า BLANK หรือ NULL ไหม?**

ไม่ตัด ถ้าค่าใดค่าหนึ่งเป็น BLANK ผลลัพธ์อาจมี space ว่างหรือค่าพิการ จึงต้องใช้ IF หรือ COALESCE ก่อนต่อ

**Q: CONCATENATE คืนค่าเป็นชนิดอะไร?**

คืนค่าเป็นข้อความ (string) เสมอ ตัวเลขถูกแปลงโดยอัตโนมัติ ถ้าต้องจัดรูปแบบ ให้ใช้ FORMAT ก่อน

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

- concatenatex
- combinevalues
- format
- [FIXED – แปลงตัวเลขเป็นข้อความพร้อมกำหนดทศนิยม/คอมมา](https://www.thepexcel.com/functions/dax/text/fixed-dax/)

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

- [Microsoft Learn: CONCATENATE Function](https://learn.microsoft.com/en-us/dax/concatenate-function-dax) _(official)_
- [DAX.guide: CONCATENATE](https://dax.guide/concatenate/) _(guide)_
- [DAX Guide: String Functions Overview](https://dax.guide/text/) _(guide)_

---

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