Thep Excel

Text.Combineรวมข้อความหลายรายการเป็นข้อความเดียว

Text.Combine ใช้สำหรับรวมข้อความหลายตัวจาก List เข้าด้วยกันเป็นข้อความเดียว โดยสามารถเลือกใช้ตัวคั่น (separator) เช่น ลูกน้ำ เครื่องหมายขีด หรือ space ได้ เหมาะสำหรับสร้างชื่อเต็ม ที่อยู่ หรือรหัสประจำตัวจากส่วนประกอบย่อยๆ

fx
=Text.Combine(texts, [separator]) as text

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
texts list List ของข้อความที่ต้องการรวมกัน ค่า null ใน list จะถูกข้ามไปโดยอัตโนมัติ
[separator]ไม่บังคับ text ตัวคั่นที่ต้องการใส่ระหว่างแต่ละข้อความ ถ้าไม่ระบุจะต่อกันโดยไม่มีตัวคั่น

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

Additional Notes

Text.Combine ใช้สำหรับรวม List ของข้อความให้กลายเป็นสตริงข้อความเดียว โดยสามารถกำหนดตัวคั่น (Separator) ระหว่างแต่ละข้อความได้

ที่เจ๋งคือมันจะ ignore ค่า null อัตโนมัติ เลยสะดวกมากเวลามีข้อมูลที่ไม่สมบูรณ์ ตัวอย่างเช่น ถ้า Middle Name ว่างจะไม่เพิ่มช่องว่างพิเศษเข้ามา

ส่วนตัวผมใช้ฟังก์ชันนี้บ่อยมากตอนต้องการสร้างที่อยู่แบบสมบูรณ์ หรือ merge ชื่อนามสกุลกับข้อมูลอื่นๆ มันทำให้โค้ด M ดูง่ายและสะอาดขึ้นเยอะครับ 😎

How it works

สร้างที่อยู่แบบเต็ม

รวมส่วนประกอบของที่อยู่ เช่น เลขที่, ถนน, ตำบล, อำเภอ ให้เป็นสตริงเดียว

สร้างรหัสสินค้าจากส่วนย่อย

รวมรหัสหมวดหมู่, รหัสสินค้า, รหัสสี เข้าด้วยกันโดยมีตัวคั่น

รวม Tags เป็นข้อความเดียว

นำ List ของ Tags ที่แยกไว้ มารวมเป็นสตริงเดียวเพื่อใช้ใน Description

Examples

รวมข้อความพื้นฐาน (ไม่มีตัวคั่น)Text.Combine({"Hello", "World"})

รวมข้อความสองคำโดยไม่มีตัวคั่นใดๆ ต่อเป็นข้อความเดียวเลย

fx
= Text.Combine({"Hello", "World"})

ผลลัพธ์HelloWorld
รวมข้อความกับตัวคั่นText.Combine({"Seattle", "WA", "98001"}, ", ")

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

fx
= Text.Combine({"Seattle", "WA", "98001"}, ", ")

ผลลัพธ์Seattle, WA, 98001
สร้างชื่อเต็มพร้อมจัดการค่า nulllet Names = {"Doug", "J", "Elis"}, FullName = Text.Combine(Names, " "), NamesWithNull = {"Rada", null, "Mihaylova"}, FullNameWithNull = Text.Combine(NamesWithNu…

สังเกตว่าเมื่อมี null ในตรงกลาง มันจะถูก skip ไปโดยอัตโนมัติ ไม่ทำให้เกิดช่องว่างพิเศษ ประสิทธิภาพสูงมากเวลาข้อมูลไม่สมบูรณ์

fx
let
Names = {"Doug", "J", "Elis"},
FullName = Text.Combine(Names, " "),
NamesWithNull = {"Rada", null, "Mihaylova"},
FullNameWithNull = Text.Combine(NamesWithNull, " ")
in
{FullName, FullNameWithNull}

ผลลัพธ์{"Doug J Elis", "Rada Mihaylova"}
ใช้กับ Table.AddColumn เพื่อสร้างคอลัมน์ใหม่let Source = Table.FromRecords({ [First = "John", Last = "Smith", City = "NYC"], [First = "Jane", Last = "Doe", City = "LA"] }), FullInfo = Table.AddColumn(Sour…

ใช้ each context เพื่อสร้างข้อความรวมจากคอลัมน์ต่างๆ ผลลัพธ์เป็นคอลัมน์ใหม่ที่มีข้อมูลที่รวมแล้ว เหมาะสำหรับสร้างรหัสประจำตัวหรือ identifier หลากหลาย

fx
let
Source = Table.FromRecords({
[First = "John", Last = "Smith", City = "NYC"],
[First = "Jane", Last = "Doe", City = "LA"]
}),
FullInfo = Table.AddColumn(Source, "FullInfo",
each Text.Combine({[First], [Last], [City]}, " – "))
in
FullInfo

ผลลัพธ์Table with new column: {"John – Smith – NYC", "Jane – Doe – LA"}
รวมรหัสประจำตัวด้วยตัวคั่นเครื่องหมายขีดText.Combine({"EMP", "2024", "001"}, "-")

สร้างรหัสพนักงานโดยรวมส่วนต่างๆ กับตัวคั่นเครื่องหมายขีด ใช้ทั่วไปในระบบที่ต้องการรหัสมาตรฐาน

fx
= Text.Combine({"EMP", "2024", "001"}, "-")

ผลลัพธ์EMP-2024-001
รวมรายการจากคอลัมน์ List ด้วย Table.Columnlet SourceTable = Table.FromRecords({ [ID = 1, Tags = {"Power", "Query", "Excel"}], [ID = 2, Tags = {"M", "Language"}] }), CombinedTags = Table.AddColumn(Source…

ใช้ Text.Combine กับคอลัมน์ที่เป็น List โดยรวมสมาชิกแต่ละตัวด้วยลูกน้ะและช่องว่าง ส่วนตัวผมใช้วิธีนี้บ่อยมากตอนต้องการแสดงแท็กหลายรายการเป็นข้อความเดียว 😎

fx
let
SourceTable = Table.FromRecords({
[ID = 1, Tags = {"Power", "Query", "Excel"}],
[ID = 2, Tags = {"M", "Language"}]
}),
CombinedTags = Table.AddColumn(SourceTable, "TagsText",
each Text.Combine([Tags], ", "))
in
CombinedTags

ผลลัพธ์Table with TagsText column: {"Power, Query, Excel", "M, Language"}

FAQs

ถ้า List มีค่า null จะเกิดอะไรขึ้น?+

ค่า null จะถูกข้ามไปโดยอัตโนมัติ ไม่ต้องตัดออกก่อน ตัวเช่น {"A", null, "B"} กับตัวคั่น "-" จะได้ "A-B" ไม่ใช่ "A–B" ซึ่งสะดวกมากครับ

Text.Combine ต่างจาก Text.Split อย่างไร?+

Text.Split ทำสิ่งตรงกันข้าม มันแยกข้อความเป็น List โดยใช้ตัวคั่นกำหนด ส่วน Text.Combine คือรวม List เป็นข้อความเดียว อันหนึ่งคือการแยก อีกอันคือการรวม เหมือนกับตัวผกผันกัน

List ว่างจะส่งคืนค่าอะไร?+

ได้ "" (ข้อความว่าง) กลับมา เลยต้องระวังตอนทำ formula เพื่อหลีกเลี่ยงผลลัพธ์ที่ว่างเปล่า

ถ้า List มีตัวเลขหรือข้อมูลอื่นที่ไม่ใช่ Text จะเกิดอะไร?+

จะเกิด Error ครับ ต้องแน่ใจว่า List มีแต่ Text เท่านั้น ถ้ามีตัวเลขต้องแปลงเป็น Text ก่อนด้วย Text.From() หรือ Number.ToText()

ใช้ Text.Combine กับ csv หรือ json ได้ไหม?+

ได้ครับ ถ้าต้องการสร้าง csv format ให้ใช้ตัวคั่นเป็น "," และถ้าต้องการสร้าง json array อาจต้องรวมกับ Text.Format หรือ JSON functions อื่นๆ ด้วย

Resources & Related

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

ฟังก์ชันนี้Text.CombineText functions
Text functions (5)
Text.From

แปลงค่าใดๆ เป็นข้อความ (Text)

Text.Insert

แทรกข้อความเข้าไปในตำแหน่งที่กำหนด

Text.Replace

Text.Replace ใช้สำหรับแทนที่ทุกส่วนของข้อความเก่าในข้อความหลักด้วยข้อความใหม่ เป็น Case Sensitive และแทนที่ทีละครั้งที่เจอในข้อความทั้งหมด

Text.Split

Text.Split(text, separator) ใช้แยกข้อความเป็น List โดยอิงตามตัวคั่น (delimiter) ที่ระบุ สามารถใช้ตัวคั่นเพียงตัวเดียวหรือหลายตัวอักษร เช่น "|" หรือ ", the " ผลลัพธ์คืนค่าเป็น List ของข้อความ

Text.Upper

Text.Upper แปลงอักขระทั้งหมดในข้อความเป็นตัวอักษรใหญ่ โดยรองรับการตั้งค่า culture ต่างๆ เพื่อจัดการการแปลงที่ถูกต้องตามภาษา

Combiner functions (1)
Combiner.CombineTextByDelimiter

Combiner.CombineTextByDelimiter คืนค่าเป็น 'ฟังก์ชัน' ที่ช่วยรวม List ของข้อความด้วยตัวคั่น (Delimiter) ที่กำหนด มักใช้เป็น argument ในฟังก์ชันอื่นๆ เช่น Table.CombineColumns

List functions (1)
List.Transform

List.Transform ใช้สำหรับสร้างลิสต์ใหม่โดยนำฟังก์ชันไปประมวลผลแต่ละตัวในลิสต์เดิม

Table functions (1)
Table.ToRows

Table.ToRows แปลงตารางให้เป็น List ของ List โดยแต่ละ List ย่อยแทนข้อมูล 1 แถว ไม่มีชื่อคอลัมน์ เหมาะสำหรับส่งออกข้อมูลเป็น JSON/CSV หรือประมวลผลแถวโดยไม่สนใจชื่อฟิลด์

Comments

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