---
title: CONCATENATEX – รวมข้อความจากแถวหลายแถว
url: https://www.thepexcel.com/functions/dax/text/concatenatex-dax/
type: function-explainer
program: DAX
syntax: "CONCATENATEX(<table>, <expression>, [<delimiter>], [<orderBy_expression>], [<order>])"
date: 2025-12-13
updated: 2025-12-21
scores:
  popularity: 7
  difficulty: 5
  usefulness: 7
---

# CONCATENATEX – รวมข้อความจากแถวหลายแถว

> CONCATENATEX ทำหน้าที่รวมข้อความจากแต่ละแถวในตารางเข้าด้วยกัน เหมาะสำหรับสร้างรายชื่อค่าที่คั่นด้วยจ

## คำอธิบาย

CONCATENATEX ทำหน้าที่รวมข้อความจากแต่ละแถวในตารางเข้าด้วยกัน เหมาะสำหรับสร้างรายชื่อค่าที่คั่นด้วยจุลภาค หรือรวมข้อมูลจากหลายแถว ใช้ได้กับตัวอักษรหรือค่าใดๆที่ต้องการทำให้เป็นข้อความ

## Syntax

```excel
CONCATENATEX(&lt;table&gt;, &lt;expression&gt;, [&lt;delimiter&gt;], [&lt;orderBy_expression&gt;], [&lt;order&gt;])
```

**Variant**

```excel
CONCATENATEX(&lt;table&gt;, &lt;expression&gt;)
```

รวมค่าจาก expression ในทุกแถวเป็นสตริงเดียว

**Variant**

```excel
CONCATENATEX(&lt;table&gt;, &lt;expression&gt;, &lt;delimiter&gt;)
```

กำหนดตัวคั่นระหว่างค่าแต่ละแถว

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| table | Yes | Table |  | ตารางที่มีแถวต่างๆ ที่ต้องการประเมิน expression ในแต่ละแถว |
| expression | Yes | Scalar |  | Expression ที่ประเมินในแต่ละแถว สามารถอ้างอิงคอลัมน์จากตารางหรือสร้าง expression ใหม่ |
| delimiter | No | Text | "" | ข้อความที่ใช้คั่นระหว่างค่าต่างๆ (เช่น "," หรือ " \| ") ค่าเริ่มต้นคือ "" |
| orderBy_expression | No | Scalar |  | Expression ที่ใช้กำหนดลำดับการเรียง สามารถเรียงตามค่า หรือตามคอลัมน์อื่น |
| order | No | Numeric/Boolean | 0 | ลำดับการเรียง 0 หรือ FALSE สำหรับ descending, 1 หรือ TRUE สำหรับ ascending |

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

### ทำรายการชื่อสินค้าในหมวดที่เลือก

รวมชื่อสินค้าหลายแถวให้แสดงเป็นสตริงเดียว

_เหมาะกับ:_ list-products

### รวมข้อความหมายเหตุจากหลายแถว

เช่น รวมหมายเหตุของออเดอร์ให้แสดงในบรรทัดเดียวพร้อมตัวคั่น

_เหมาะกับ:_ join-notes

## ตัวอย่าง

### 1. รวมชื่อพนักงานโดยใช้จุลภาค

```excel
Employee List = CONCATENATEX(Employees, Employees[FirstName] & " " & Employees[LastName], ", ")
```

**ผลลัพธ์:** `"Alan Brewer, Michael Blythe, James Bailey"`

ประเมิน expression ชื่อและนามสกุลในแต่ละแถว แล้วรวมด้วยจุลภาค expression ทำงานในแต่ละแถวของตาราง Employees ด้วย row context

### 2. รวมสินค้าตามประเภท เรียงตามค่านอก

```excel
Category Products = CONCATENATEX(FILTER(Products, Products[Category] = "Electronics"), Products[ProductName], " | ", Products[Price], 0)
```

**ผลลัพธ์:** `"Laptop | Monitor | Keyboard"`

กรองเฉพาะสินค้าประเภท Electronics แล้วเรียงตามราคา descending (0) ใช้ FILTER เพราะอยากกรองตามเงื่อนไขเฉพาะ

### 3. นับจำนวนและรวมค่าด้วย VAR

```excel
Items Summary =
VAR ItemList = CONCATENATEX(
    TOPN(5, Sales, Sales[Amount], 0),
    Sales[ProductName] & " (" & Sales[Amount] & ")",
    "; "
)
RETURN
    "Top 5: " & ItemList
```

**ผลลัพธ์:** `"Top 5: Product A (500); Product B (450); Product C (400); Product D (350); Product E (300)"`

ใช้ TOPN หยิบ 5 รายการสูงสุด แล้วรวมด้วยเซมิโคลอน ใช้ VAR เพื่อความชัดเจน สามารถ reuse ItemList ได้

### 4. สร้าง breadcrumb hierarchy ด้วย RELATED

```excel
Breadcrumb =
VAR CurrentCategory = VALUES(Products[Category])
VAR RelatedSubcategories = RELATEDTABLE(Subcategories)
RETURN
    CONCATENATEX(
        RelatedSubcategories,
        Subcategories[Name],
        " > ",
        Subcategories[SortOrder],
        1
    )
```

**ผลลัพธ์:** `"Electronics > Computers > Laptops"`

ใช้ RELATEDTABLE เพื่อดึงข้อมูลจากตารางที่เกี่ยวข้อง จากนั้นรวมด้วย > และเรียงตามคอลัมน์ SortOrder ascending (1) สร้าง navigation path ให้ผู้ใช้เห็นชัด

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

- ใช้ VAR เก็บผลลัพธ์ของ CONCATENATEX สำหรับ reuse ใน expression ยาว

- ถ้าข้อมูลเยอะ ลองใช้ TOPN หรือ FILTER ก่อนจึงส่งให้ CONCATENATEX ช่วยลดการประเมิน

- จำไว้ว่า CONCATENATEX ทำงานในแต่ละแถว ถ้าแถวเยอะอาจช้า ให้ทดสอบด้วยตัวอักษรคนละแบบ

- ใช้ CONCATENATEX ร่วมกับ RELATED เพื่อดึงข้อมูลจากตารางอื่น ๆ ที่เกี่ยวข้อง

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

**Q: CONCATENATEX ต่างจาก CONCATENATE อย่างไร?**

CONCATENATE รวมค่าจากคอลัมน์เดียวหรือที่ระบุเฉพาะ ส่วน CONCATENATEX ประเมิน expression ในแต่ละแถวของตารางทั้งหมด ทำให้ยืดหยุ่นมากขึ้น

**Q: ถ้าไม่ระบุ delimiter จะเป็นอย่างไร?**

ค่าเริ่มต้นคือ "" (ว่างเปล่า) ข้อความจะรวมติดกันโดยไม่มีตัวคั่น ถ้าต้องการคั่นต้องระบุ delimiter เช่น ", " หรือ " | "

**Q: สามารถใช้กับ DirectQuery mode ได้ไหม?**

ไม่ได้ CONCATENATEX ไม่รองรับ DirectQuery mode สำหรับ calculated columns หรือ RLS rules ต้องใช้ Import mode แทน

**Q: เมื่อไหร่ต้องใช้ orderBy_expression?**

ใช้เมื่อต้องการเรียงลำดับค่าในผลลัพธ์ เช่น ต้องการเรียงตามหมวดหมู่ หรือเรียงตามค่าตัวเลข หากไม่ระบุจะเรียงตามลำดับของข้อมูลดั้งเดิม

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

- [CALCULATE – ฟังก์ชันหลักของ DAX ที่ควบคุม Filter Context](https://www.thepexcel.com/functions/dax/filter/calculate-dax/)
- [FILTER – กรองตารางด้วยเงื่อนไขที่ซับซ้อน (Iterator Function)](https://www.thepexcel.com/functions/dax/filter/filter-dax/)
- [SUMX – Iterator Function สำหรับคำนวณผลรวมแบบ Row-by-Row ใน DAX](https://www.thepexcel.com/functions/dax/aggregation/sumx-dax/)
- [TOPN – คืนตาราง Top N ตามนิพจน์การเรียงลำดับ](https://www.thepexcel.com/functions/dax/table-manipulation/topn-dax/)
- [RELATED – ดึงค่าจากตารางที่มีความสัมพันธ์ (Many → One)](https://www.thepexcel.com/functions/dax/relationship/related-dax/)
- [RELATEDTABLE – คืนตารางฝั่ง Many ที่สัมพันธ์กับแถวปัจจุบัน (One → Many)](https://www.thepexcel.com/functions/dax/relationship/relatedtable-dax/)

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

- [Microsoft Learn: CONCATENATEX](https://learn.microsoft.com/en-us/dax/concatenatex-function-dax) _(official)_
- [DAX Guide: CONCATENATEX](https://dax.guide/concatenatex/) _(guide)_
- [SQLBI: Text Functions in DAX](https://www.sqlbi.com/articles/text-functions-in-dax/) _(guide)_

---

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