Thep Excel

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

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

=CONCATENATE(<text1>, <text2>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
7/10

Difficulty
2/10

Usefulness
7/10

Syntax & Arguments

=CONCATENATE(<text1>, <text2>)

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

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: ต่อรหัสและชื่อสินค้า (Calculated Column)
Product Label = CONCATENATE( Products[ProductCode], Products[ProductName] )
ใช้ใน Calculated Column ของตารางผลิตภัณฑ์ ต่อรหัสและชื่อโดยตรง ได้สตริงต่อเนื่อง
DAX Formula:

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

Result:

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

ตัวอย่างที่ 2: ต่อข้อความกับสัญลักษณ์คั่น
Product Label (Dash) = CONCATENATE( Products[ProductCode], CONCATENATE(" - ", Products[ProductName]) )
เนื่องจาก CONCATENATE รับ 2 ค่า จึงต้อง nest เมื่อต้องการคั่นด้วยสัญลักษณ์ ทางเลือกที่ดีกว่าคือใช้เครื่องหมาย & เช่น Products[ProductCode] & " – " & Products[ProductName]
DAX Formula:

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

Result:

สตริงลักษณะ "ABC123 - Widget"

ตัวอย่างที่ 3: ต่อข้อความในมาตรวัด
Title Text = CONCATENATE("ยอดขาย ", "(รวม)")
ใช้ต่อข้อความลิตเท่านั้นในมาตรวัด เหมาะสำหรับป้ายกำกับและหัวข้อ
DAX Formula:

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

Result:

สตริง "ยอดขาย (รวม)"

ตัวอย่างที่ 4: ต่อค่าตัวเลขกับข้อความ
Sales Info = CONCATENATE( "ยอดขาย: ", CONCATENATE(FORMAT([Total Sales], "$#,##0"), " USD") )
ตัวเลขถูกแปลงเป็นข้อความโดยอัตโนมัติ เมื่อใช้กับ FORMAT เพื่อจัดรูปแบบตัวเลขก่อนต่อ
DAX Formula:

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

Result:

สตริง "ยอดขาย: $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 อัตโนมัติ
DAX Formula:

=// ❌ ทำให้ปัญหา
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]))
    )
)

Result:

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

Additional Notes

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

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

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

Leave a Reply

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