Thep Excel

Table.CombineColumns – รวมหลายคอลัมน์เป็นหนึ่งเดียว

Table.CombineColumns รวมข้อมูลจากหลายคอลัมน์เข้าด้วยกันเป็นคอลัมน์เดียว โดยใช้ฟังก์ชัน Combiner ที่กำหนดเอง เช่น รวมชื่อ-นามสกุล หรือสร้างรหัสประจำตัว

=Table.CombineColumns(table as table, sourceColumns as list, combiner as function, newColumnName as text) as table

By ThepExcel AI Agent
16 December 2025

Function Metrics


Popularity
7/10

Difficulty
3/10

Usefulness
7/10

Syntax & Arguments

=Table.CombineColumns(table as table, sourceColumns as list, combiner as function, newColumnName as text) as table

Argument Type Required Default Description
table table Yes ตารางต้นทางที่ต้องการรวมคอลัมน์
sourceColumns list Yes รายชื่อคอลัมน์ที่ต้องการรวม (ลำดับเรื่อง – ตัวแรกจะถูกรวมเข้าก่อน)
combiner function Yes ฟังก์ชันรวมข้อมูล เช่น Combiner.CombineTextByDelimiter() หรือฟังก์ชันกำหนดเอง
newColumnName text Yes ชื่อของคอลัมน์ใหม่ที่เก็บข้อมูลรวมทั้งหมด

How it works

สร้าง Full Name จาก First/Last Name

สร้าง Full Name จาก First/Last Name

สร้าง Full Address จากส่วนประกอบที่อยู่

สร้าง Full Address จากส่วนประกอบที่อยู่

สร้าง Key สำหรับการ Join จากหลายคอลัมน์

สร้าง Key สำหรับการ Join จากหลายคอลัมน์

Examples

รวมชื่อและนามสกุล (ตัวอย่างพื้นฐาน)
let Source = Table.FromRecords({[First="John", Last="Doe"]}), Combined = Table.CombineColumns( Source, {"First", "Last"}, Combiner.CombineTextByDelimiter(" ", Q…
รวมคอลัมน์ First และ Last คั่นด้วยช่องว่าง ลำดับจะเป็น First + " " + Last
Power Query Formula:

let
    Source = Table.FromRecords({[First="John", Last="Doe"]}),
    Combined = Table.CombineColumns(
        Source,
        {"First", "Last"},
        Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),
        "FullName"
    )
in
    Combined

Result:

Table with columns: [First, Last, FullName]
FullName = "John Doe"

สร้างรหัสประจำตัวจากปี เดือน วัน
let Source = #table( type table [Year=text, Month=text, Day=text], {{"2025", "12", "23"}} ), Combined = Table.CombineColumns( Source, {"Year", "Month", "Day"},…
รวมคอลัมน์ Year, Month, Day ด้วยตัวคั่น "-" ได้ DateCode ในรูปแบบ ISO 8601
Power Query Formula:

let
    Source = #table(
        type table [Year=text, Month=text, Day=text],
        {{"2025", "12", "23"}}
    ),
    Combined = Table.CombineColumns(
        Source,
        {"Year", "Month", "Day"},
        Combiner.CombineTextByDelimiter("-", QuoteStyle.None),
        "DateCode"
    )
in
    Combined

Result:

Table with DateCode="2025-12-23"

รวมที่อยู่จากหลายคอลัมน์
let Source = Table.FromRecords({ [Street="123 Main St", City="Bangkok", Country="Thailand"] }), Combined = Table.CombineColumns( Source, {"Street", "City", "Cou…
รวมคอลัมน์ที่อยู่ทั้งหมด โดยใช้ ", " เป็นตัวคั่น เพื่อให้อ่านได้ชัดเจน
Power Query Formula:

let
    Source = Table.FromRecords({
        [Street="123 Main St", City="Bangkok", Country="Thailand"]
    }),
    Combined = Table.CombineColumns(
        Source,
        {"Street", "City", "Country"},
        Combiner.CombineTextByDelimiter(", ", QuoteStyle.None),
        "FullAddress"
    )
in
    Combined

Result:

Table with FullAddress="123 Main St, Bangkok, Thailand"

ใช้ QuoteStyle สำหรับข้อมูลที่มีเครื่องหมาย
let Source = Table.FromRecords({ [Product="Apple", Category="Fruit", Price="50"] }), Combined = Table.CombineColumns( Source, {"Product", "Category", "Price"},…
ใช้ QuoteStyle.All เพื่อให้แต่ละค่ามีเครื่องหมาย quote รอบด้าน เหมาะสำหรับข้อมูล CSV
Power Query Formula:

let
    Source = Table.FromRecords({
        [Product="Apple", Category="Fruit", Price="50"]
    }),
    Combined = Table.CombineColumns(
        Source,
        {"Product", "Category", "Price"},
        Combiner.CombineTextByDelimiter("|", QuoteStyle.All),
        "ProductInfo"
    )
in
    Combined

Result:

Table with ProductInfo="\"Apple\"|\"Fruit\"|\"50\""

FAQs

Table.CombineColumns กับ Text.Combine ต่างกันอย่างไร?

Text.Combine รวมลิสต์ข้อความและส่งคืนข้อความอย่างเดียว ส่วน Table.CombineColumns ทำการรวมคอลัมน์จากตาราง แล้วสร้างคอลัมน์ใหม่เพิ่มเข้าไป ใช้ Table.CombineColumns เวลาต้องการเพิ่มคอลัมน์รวมในตาราง ไม่ต้องสร้างขั้นตอนแยกต่างหาก

Combiner มีอะไรบ้าง?

Combiner.CombineTextByDelimiter() เป็นที่นิยมสำหรับรวมข้อมูลแบบง่าย หรือสามารถเขียนฟังก์ชันเอง เช่น each Text.Combine(List.Transform(_, Text.From), “-“) สำหรับการรวมแบบกำหนดเอง

ลำดับของคอลัมน์ในรายการ sourceColumns สำคัญหรือเปล่า?

สำคัญมาก! ลำดับในรายการเป็นตัวกำหนดลำดับการรวม เช่น {“First”, “Last”} จะให้ First + Last แต่ {“Last”, “First”} จะให้ Last + First

คอลัมน์ต้นทางจะถูกลบไปหรือเปล่า?

ไม่ คอลัมน์เดิมยังคงอยู่ Table.CombineColumns เพียงเพิ่มคอลัมน์ใหม่เข้ามา ถ้าต้องการลบคอลัมน์เดิม ใช้ Table.RemoveColumns() หลังจากนั้น

ใช้กับคอลัมน์ที่มี null ได้ไหม?

ได้ แต่ต้องระวัง Combiner.CombineTextByDelimiter จัดการ null อัตโนมัติ ถ้าใช้ combiner แบบกำหนดเอง ต้องจัดการ null เอง ด้วย Text.From() หรือ Text.Replace()

QuoteStyle.None กับ QuoteStyle.All ต่างกันอย่างไร?

QuoteStyle.None ไม่ใส่เครื่องหมาย quote รอบค่า (ปกติสำหรับข้อมูลทั่วไป), QuoteStyle.All ใส่เครื่องหมาย quote รอบทุกค่า (สำหรับ CSV หรือข้อมูลที่มีคอมมา)

Resources & Related

Additional Notes

Table.CombineColumns ใช้สำหรับรวมข้อมูลจากหลายคอลัมน์เข้าด้วยกันเป็นคอลัมน์เดียว โดยใช้ฟังก์ชันรวมข้อความ (Combiner) ที่เรากำหนด

ที่เจ๋งคือ มันทำให้เราไม่ต้องแยกเขียนโค้ด Text.Combine หลายบรรทัด – เพียงแค่บอกว่าคอลัมน์ไหนที่ต้องรวม, รวมยังไง, ชื่อคอลัมน์ใหม่คืออะไร แล้วเสร็จ บอกเลยว่ามันช่วยเวลาและทำให้โค้ดสั้นลงเยอะ

ส่วนตัวผม มักใช้ Table.CombineColumns คู่กับ Combiner.CombineTextByDelimiter เวลาต้องการรวมข้อมูลแบบง่ายๆ โดยใช้ตัวคั่นที่กำหนดเอง – เหมือนการรวมวันที่ (Year-Month-Day) หรือสร้างรหัสประจำตัวจากหลายคอลัมน์ ทำให้โค้ดอ่านเข้าใจง่าย และแก้ไขได้ง่ายด้วย

Leave a Reply

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