Text.Combine ใช้สำหรับรวมข้อความหลายตัวจาก List เข้าด้วยกันเป็นข้อความเดียว โดยสามารถเลือกใช้ตัวคั่น (separator) เช่น ลูกน้ำ เครื่องหมายขีด หรือ space ได้ เหมาะสำหรับสร้างชื่อเต็ม ที่อยู่ หรือรหัสประจำตัวจากส่วนประกอบย่อยๆ
=Text.Combine(texts as list, optional separator as nullable text) as text
=Text.Combine(texts as list, optional separator as nullable text) as text
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| texts | list | Yes | List ของข้อความที่ต้องการรวมกัน ค่า null ใน list จะถูกข้ามไปโดยอัตโนมัติ | |
| separator | text | Optional | ตัวคั่นที่ต้องการใส่ระหว่างแต่ละข้อความ ถ้าไม่ระบุจะต่อกันโดยไม่มีตัวคั่น |
รวมส่วนประกอบของที่อยู่ เช่น เลขที่, ถนน, ตำบล, อำเภอ ให้เป็นสตริงเดียว
รวมรหัสหมวดหมู่, รหัสสินค้า, รหัสสี เข้าด้วยกันโดยมีตัวคั่น
นำ List ของ Tags ที่แยกไว้ มารวมเป็นสตริงเดียวเพื่อใช้ใน Description
Text.Combine({"Hello", "World"})= Text.Combine({"Hello", "World"})
HelloWorld
Text.Combine({"Seattle", "WA", "98001"}, ", ")= Text.Combine({"Seattle", "WA", "98001"}, ", ")
Seattle, WA, 98001
let Names = {"Doug", "J", "Elis"}, FullName = Text.Combine(Names, " "), NamesWithNull = {"Rada", null, "Mihaylova"}, FullNameWithNull = Text.Combine(NamesWithNu…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"}
let Source = Table.FromRecords({ [First = "John", Last = "Smith", City = "NYC"], [First = "Jane", Last = "Doe", City = "LA"] }), FullInfo = Table.AddColumn(Sour…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"}, "-")= Text.Combine({"EMP", "2024", "001"}, "-")
EMP-2024-001
let SourceTable = Table.FromRecords({ [ID = 1, Tags = {"Power", "Query", "Excel"}], [ID = 2, Tags = {"M", "Language"}] }), CombinedTags = Table.AddColumn(Source…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"}
ค่า null จะถูกข้ามไปโดยอัตโนมัติ ไม่ต้องตัดออกก่อน ตัวเช่น {“A”, null, “B”} กับตัวคั่น “-” จะได้ “A-B” ไม่ใช่ “A–B” ซึ่งสะดวกมากครับ
Text.Split ทำสิ่งตรงกันข้าม มันแยกข้อความเป็น List โดยใช้ตัวคั่นกำหนด ส่วน Text.Combine คือรวม List เป็นข้อความเดียว อันหนึ่งคือการแยก อีกอันคือการรวม เหมือนกับตัวผกผันกัน
ได้ “” (ข้อความว่าง) กลับมา เลยต้องระวังตอนทำ formula เพื่อหลีกเลี่ยงผลลัพธ์ที่ว่างเปล่า
จะเกิด Error ครับ ต้องแน่ใจว่า List มีแต่ Text เท่านั้น ถ้ามีตัวเลขต้องแปลงเป็น Text ก่อนด้วย Text.From() หรือ Number.ToText()
ได้ครับ ถ้าต้องการสร้าง csv format ให้ใช้ตัวคั่นเป็น “,” และถ้าต้องการสร้าง json array อาจต้องรวมกับ Text.Format หรือ JSON functions อื่นๆ ด้วย
Text.Combine ใช้สำหรับรวม List ของข้อความให้กลายเป็นสตริงข้อความเดียว โดยสามารถกำหนดตัวคั่น (Separator) ระหว่างแต่ละข้อความได้
ที่เจ๋งคือมันจะ ignore ค่า null อัตโนมัติ เลยสะดวกมากเวลามีข้อมูลที่ไม่สมบูรณ์ ตัวอย่างเช่น ถ้า Middle Name ว่างจะไม่เพิ่มช่องว่างพิเศษเข้ามา
ส่วนตัวผมใช้ฟังก์ชันนี้บ่อยมากตอนต้องการสร้างที่อยู่แบบสมบูรณ์ หรือ merge ชื่อนามสกุลกับข้อมูลอื่นๆ มันทำให้โค้ด M ดูง่ายและสะอาดขึ้นเยอะครับ 😎