Thep Excel

CONCATENATEX – เชื่อมข้อความแบบวนลูป (Text Join for DAX)

เชื่อมข้อความจากหลายแถวให้เป็นข้อความเดียว (เหมือน TEXTJOIN)

CONCATENATEX วนลูปในตารางเพื่อนำผลลัพธ์ของ Expression ในแต่ละแถวมาเชื่อมต่อกันเป็นข้อความเดียว สามารถกำหนดตัวคั่น (Delimiter) และเรียงลำดับผลลัพธ์ก่อนเชื่อมได้

=CONCATENATEX(Table, Expression, [Delimiter], [OrderBy_Expression1], [Order1], ...)

By ThepExcel AI Agent
1 December 2025

Syntax & Arguments

=CONCATENATEX(Table, Expression, [Delimiter], [OrderBy_Expression1], [Order1], ...)

Argument Type Required Default Description
Table table Yes ตารางที่ต้องการวนลูป
Expression text Yes สูตรหรือคอลัมน์ที่ให้ผลลัพธ์เป็นข้อความที่ต้องการเชื่อม
Delimiter text Optional , ตัวคั่นระหว่างข้อความ (เช่น “, “)
OrderBy_Expression any Optional คอลัมน์ที่ใช้สำหรับเรียงลำดับข้อมูลก่อนเชื่อม

How it works

แสดงรายการสินค้าในใบเสร็จ

แสดงชื่อสินค้าทั้งหมดที่ขายได้ใน Order นั้นๆ รวมอยู่ในช่องเดียว คั่นด้วยคอมมา

Debug ค่าใน Measure

ใช้แสดงค่าที่ Filter Context มองเห็น เพื่อตรวจสอบความถูกต้องของสูตร

Examples

ตัวอย่างที่ 1: รายชื่อสินค้าที่ขายได้ (พื้นฐาน)

วนลูปตาราง Sales ดึงชื่อสินค้า (ผ่าน RELATED) มาเชื่อมกัน คั่นด้วย ", "
DAX Formula:

Sold Products = CONCATENATEX( Sales, RELATED('Product'[ProductName]), ", " )

Result:

Apple, Banana, Orange

ตัวอย่างที่ 2: เรียงลำดับก่อนเชื่อม (Sorting)

ใช้ VALUES เพื่อดึงเฉพาะชื่อที่ไม่ซ้ำกัน แล้วใช้ CONCATENATEX เชื่อม โดยระบุให้เรียงตาม ProductName แบบ ASC (น้อยไปมาก)
DAX Formula:

Sorted Products = CONCATENATEX(
    VALUES('Product'[ProductName]),
    'Product'[ProductName],
    ", ",
    'Product'[ProductName],
    ASC
)

Result:

Apple, Banana, Orange (เรียงตามตัวอักษร)

ตัวอย่างที่ 3: แสดงรายชื่อพนักงานขายยอดเยี่ยม 3 อันดับแรก

ใช้ TOPN ดึง 3 คนเก่งสุดมาสร้างตารางจำลอง แล้วใช้ CONCATENATEX เชื่อมชื่อและยอดขาย เข้าด้วยกัน โดยใช้ UNICHAR(10) เพื่อขึ้นบรรทัดใหม่
DAX Formula:

Top 3 Salesman = 
CONCATENATEX(
    TOPN(3, VALUES(Sales[Salesperson]), [Total Sales], DESC),
    Sales[Salesperson] & " (" & FORMAT([Total Sales], "#,#") & " )",
    UNICHAR(10),
    [Total Sales],
    DESC
)

Result:

John (10,000)
Jane (8,500)
Bob (5,000)

FAQs

ทำไมผลลัพธ์ซ้ำกันเยอะมาก?

ถ้าคุณใช้ CONCATENATEX กับตาราง Fact (เช่น Sales) โดยตรง ชื่อสินค้าจะซ้ำตามจำนวนแถวที่ขายได้ ควรใช้ฟังก์ชัน VALUES หรือ DISTINCT หรือ SUMMARIZE เพื่อสรุปรายการที่ไม่ซ้ำก่อนส่งให้ CONCATENATEX

Resources & Related

Additional Notes

CONCATENATEX คือฟังก์ชันที่ช่วยให้คุณนำข้อความจากหลายๆ แถวมาเชื่อมต่อกันเป็นข้อความเดียว โดยมีตัวคั่น (Delimiter) คั่นกลาง คล้ายกับฟังก์ชัน TEXTJOIN ใน Excel แต่ทำงานบน Data Model ของ DAX

ประโยชน์หลักคือการแสดงรายการข้อมูลหลายรายการใน Cell เดียวในตาราง Matrix หรือ Card เช่น การแสดงรายชื่อสินค้าทั้งหมดที่ลูกค้าคนนี้ซื้อ

Leave a Reply

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