Thep Excel

DAX · Text

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

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

fx
=CONCATENATE(<text1>, <text2>)

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
text1 scalar ข้อความ/ค่าสเกลาร์ตัวแรก สามารถเป็นข้อความ ตัวเลข boolean หรือ reference ไปยังคอลัมน์
text2 scalar ข้อความ/ค่าสเกลาร์ตัวที่สอง สามารถเป็นข้อความ ตัวเลข boolean หรือ reference ไปยังคอลัมน์

Additional Notes

CONCATENATE ใช้ต่อข้อความ 2 ส่วนให้เป็นสตริงเดียว เหมาะกับงานทำชื่อแสดงผล (label) หรือประกอบข้อความจากหลายคอลัมน์ เช่น “รหัส – ชื่อสินค้า” โดยฟังก์ชันนี้รับได้ครั้งละ 2 ค่า ส่วนตัวผมชอบใช้เมื่ออยากต่อข้อความจากสองที่แหล่งเท่านั้น เพราะความชัดเจน ได้เลย ไม่ต้อง nest หลาย ๆ ครั้งเหมือนแบบซ้อนกัน

ถ้าต้องต่อหลายค่าแบบยาว ๆ หรือต่อจากตารางทั้งแถว ให้พิจารณาใช้ CONCATENATEX (iterator version) ซึ่งสามารถนำค่าจากหลายแถวมาต่อเป็นสตริงเดียวได้

ที่เจ๋งคือ CONCATENATE ไม่ตัด BLANK โดยอัตโนมัติ ถ้าหนึ่งในสองค่าเป็น BLANK มันจะแสดงผล “” (empty string) เฉย ๆ บางครั้งนี่เป็นปัญหา เลยต้องใช้ COALESCE หรือ IF เพื่อเช็คค่า BLANK ก่อนต่อ

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: ต่อรหัสและชื่อสินค้า (Calculated Column)Product Label = CONCATENATE( Products[ProductCode], Products[ProductName] )

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

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

ผลลัพธ์สตริงที่เป็นการต่อ 2 คอลัมน์เข้าด้วยกัน เช่น "ABC123Widget"
ตัวอย่างที่ 2: ต่อข้อความกับสัญลักษณ์คั่นProduct Label (Dash) = CONCATENATE( Products[ProductCode], CONCATENATE(" – ", Products[ProductName]) )

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

fx
=Product Label (Dash) =
CONCATENATE(
Products[ProductCode],
CONCATENATE(" – ", Products[ProductName])
)

ผลลัพธ์สตริงลักษณะ "ABC123 – Widget"
ตัวอย่างที่ 3: ต่อข้อความในมาตรวัดTitle Text = CONCATENATE("ยอดขาย ", "(รวม)")

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

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

ผลลัพธ์สตริง "ยอดขาย (รวม)"
ตัวอย่างที่ 4: ต่อค่าตัวเลขกับข้อความSales Info = CONCATENATE( "ยอดขาย: ", CONCATENATE(FORMAT([Total Sales], "$#,##0"), " USD") )

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

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

ผลลัพธ์สตริง "ยอดขาย: $1,250 USD"
ตัวอย่างที่ 5: ต่อเมื่อมีค่า BLANK (ตัวอย่างปัญหา)// ❌ ทำให้ปัญหา Full Name (Bad) = CONCATENATE( Sales[FirstName], CONCATENATE(" ", Sales[LastName]) ) // ✅ แก้ปัญหา ใช้ IF Full Name (Good) = IF( ISBLANK(Sales[F…

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

fx
=// ❌ ทำให้ปัญหา
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" (ไม่มีช่องว่างเปล่า)

FAQs

CONCATENATE รับได้กี่ค่า?+

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

ใช้ CONCATENATE ในไหนได้บ้าง?+

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

CONCATENATE กับ & operator ต่างกันไหม?+

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

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

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

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

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

Resources & Related

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

ฟังก์ชันนี้CONCATENATEText
Text (9)
COMBINEVALUES

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

CONCATENATEX

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

FIXED

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

FORMAT

FORMAT ใช้แปลงค่า (ตัวเลข วันที่ เวลา) เป็น Text ตามรูปแบบที่ต้องการ เช่น แปลง 0.25 เป็น "25%" หรือ 2025-12-20 เป็น "20/12/2025" โดยสนับสนุน locale ต่างๆ

LEN (DAX)

LEN นับจำนวนอักขระของสตริง รวมช่องว่างด้วย ใช้สำหรับตรวจสอบความยาวข้อมูล การทำความสะอาด และงานเงื่อนไขตามความยาวข้อความ

LOWER

LOWER แปลงข้อความให้เป็นตัวพิมพ์เล็กทั้งหมด มีประโยชน์มากสำหรับการทำความสะอาดข้อมูลและแก้ปัญหาคีย์ไม่ตรงกันเพราะเหตุคำต่างชั้นอักษร

REPT

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

TRIM

ฟังก์ชันทำความสะอาดข้อความ ลบช่องว่างส่วนเกินนำหน้า ท้าย และช่องว่างหลายตัวระหว่างคำ โดยคงไว้ช่องว่างเดี่ยวระหว่างคำเท่านั้น

UPPER

UPPER แปลงข้อความให้เป็นตัวพิมพ์ใหญ่ทั้งหมด ใช้บ่อยเพื่อปรับปรุงคุณภาพข้อมูลและทำให้การเปรียบเทียบข้อความแม่นยำ

Comments

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