Thep Excel

DAX · Text

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

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

fx
=CONCATENATEX(<table>, <expression>, [<delimiter>], [<orderBy_expression>], [<order>])

ความนิยม7/10
ความยาก5/10
ประโยชน์7/10

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
table Table ตารางที่มีแถวต่างๆ ที่ต้องการประเมิน expression ในแต่ละแถว
expression Scalar Expression ที่ประเมินในแต่ละแถว สามารถอ้างอิงคอลัมน์จากตารางหรือสร้าง expression ใหม่
[delimiter]ไม่บังคับ Text "" ข้อความที่ใช้คั่นระหว่างค่าต่างๆ (เช่น “,” หรือ ” | “) ค่าเริ่มต้นคือ “”
[orderBy_expression]ไม่บังคับ Scalar Expression ที่ใช้กำหนดลำดับการเรียง สามารถเรียงตามค่า หรือตามคอลัมน์อื่น
[order]ไม่บังคับ Numeric/Boolean 0 ลำดับการเรียง 0 หรือ FALSE สำหรับ descending, 1 หรือ TRUE สำหรับ ascending

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

CONCATENATEX ประเมิน expression ในแต่ละแถวของตารางแล้วรวมผลลัพธ์เข้าด้วยกันเป็นข้อความเดียว ใช้ delimiter ช่วยคั่นค่าต่างๆ

ที่เจ๋งคือ มันเป็น iterator function ที่มี row context เวลาประเมิน expression แต่ยังคงเป็น scalar result – เข้าใจ concept นี้แล้ว DAX ก็ไม่ยากแล้ว

ส่วนตัวผม ใช้ CONCATENATEX บ่อยมากเมื่อต้องการทำ summary ของข้อมูลย่อย หรือสร้าง breadcrumb list เพื่อให้ผู้ใช้เข้าใจโครงสร้างข้อมูลได้ดีขึ้น

How it works

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

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

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

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

Examples

รวมชื่อพนักงานโดยใช้จุลภาคEmployee List = CONCATENATEX(Employees, Employees[FirstName] & " " & Employees[LastName], ", ")

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

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

ผลลัพธ์"Alan Brewer, Michael Blythe, James Bailey"
รวมสินค้าตามประเภท เรียงตามค่านอกCategory Products = CONCATENATEX(FILTER(Products, Products[Category] = "Electronics"), Products[ProductName], " | ", Products[Price], 0)

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

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

ผลลัพธ์"Laptop | Monitor | Keyboard"
นับจำนวนและรวมค่าด้วย VARItems Summary = VAR ItemList = CONCATENATEX( TOPN(5, Sales, Sales[Amount], 0), Sales[ProductName] & " (" & Sales[Amount] & ")", "; " ) RETURN "Top 5: " & ItemLi…

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

fx
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)"
สร้าง breadcrumb hierarchy ด้วย RELATEDBreadcrumb = VAR CurrentCategory = VALUES(Products[Category]) VAR RelatedSubcategories = RELATEDTABLE(Subcategories) RETURN CONCATENATEX( RelatedSubcategories,…

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

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

ผลลัพธ์"Electronics > Computers > Laptops"

FAQs

CONCATENATEX ต่างจาก CONCATENATE อย่างไร?+

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

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

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

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

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

เมื่อไหร่ต้องใช้ orderBy_expression?+

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

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ CONCATENATEX จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้CONCATENATEXText
Text (6)
COMBINEVALUES

COMBINEVALUES รวมหลายค่าสเกลาร์เป็นข้อความเดียว โดยกำหนดตัวคั่นได้ เหมาะกับการสร้างคีย์รวมจากหลายคอลัมน์ในแถวเดียว

CONCATENATE

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

FIXED

FIXED แปลงตัวเลขเป็นข้อความ พร้อมกำหนดจำนวนทศนิยม และเลือกใส่/ไม่ใส่ตัวคั่นหลักพัน เหมาะกับการแสดงผลแบบรูปแบบคงที่

MID

MID คืนสตริงย่อยจากข้อความ โดยเริ่มที่ StartNum (เริ่มนับที่ 1) และดึง NumChars ตัว ใช้บ่อยในการแยก/ตัดข้อความร่วมกับ LEFT/RIGHT/FIND/SEARCH

REPT

REPT ทำซ้ำข้อความตามจำนวนที่กำหนด ช่วยสร้างสัญลักษณ์ซ้ำๆ เช่น ดาว, จุด, หรือเครื่องหมายคั่น เพื่อจัดรูปแบบและเน้นข้อมูลในรายงาน

TOCSV

แปลงตารางเป็นสตริงรูปแบบ CSV โดยกำหนดจำนวนแถวสูงสุด ตัวคั่น และว่าจะใส่หัวคอลัมน์หรือไม่

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่