---
title: Table.CombineColumns – รวมหลายคอลัมน์เป็นหนึ่งเดียว
url: https://www.thepexcel.com/functions/power-query/table-functions/table-combinecolumns/
type: function-explainer
program: Power Query
syntax: "Table.CombineColumns(table as table, sourceColumns as list, combiner as function, newColumnName as text) as table"
date: 2025-12-16
updated: 2025-12-23
scores:
  popularity: 7
  difficulty: 3
  usefulness: 7
---

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

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

## คำอธิบาย

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

## Syntax

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

## Arguments

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

## เคสการใช้งาน

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

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

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

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

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

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

## ตัวอย่าง

### 1. รวมชื่อและนามสกุล (ตัวอย่างพื้นฐาน)

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

**ผลลัพธ์:** `Table with columns: [First, Last, FullName]
FullName = "John Doe"`

รวมคอลัมน์ First และ Last คั่นด้วยช่องว่าง ลำดับจะเป็น First + " " + Last

### 2. สร้างรหัสประจำตัวจากปี เดือน วัน

```excel
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
```

**ผลลัพธ์:** `Table with DateCode="2025-12-23"`

รวมคอลัมน์ Year, Month, Day ด้วยตัวคั่น "-" ได้ DateCode ในรูปแบบ ISO 8601

### 3. รวมที่อยู่จากหลายคอลัมน์

```excel
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
```

**ผลลัพธ์:** `Table with FullAddress="123 Main St, Bangkok, Thailand"`

รวมคอลัมน์ที่อยู่ทั้งหมด โดยใช้ ", " เป็นตัวคั่น เพื่อให้อ่านได้ชัดเจน

### 4. ใช้ QuoteStyle สำหรับข้อมูลที่มีเครื่องหมาย

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

**ผลลัพธ์:** `Table with ProductInfo="\"Apple\"|\"Fruit\"|\"50\""`

ใช้ QuoteStyle.All เพื่อให้แต่ละค่ามีเครื่องหมาย quote รอบด้าน เหมาะสำหรับข้อมูล CSV

## หมายเหตุเพิ่มเติม

- ใช้ Combiner.CombineTextByDelimiter() สำหรับรวมข้อมูลแบบง่าย - มันจัดการ null และการแปลงข้อมูลอัตโนมัติ

- ลำดับในรายการ sourceColumns สำคัญ - เปลี่ยนลำดับเปลี่ยนผลลัพธ์ เช่น {"First", "Last"} vs {"Last", "First"}

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

- เวลารวมข้อมูลตัวเลข ต้องแปลงเป็นข้อความก่อน - ใช้ Combiner ที่มี Text.From() หรือเขียน combiner เอง

- ใช้ Table.SelectColumns() ก่อน Table.CombineColumns ถ้าต้องการเลือกเฉพาะบางคอลัมน์จากตารางเดิม

- QuoteStyle.None เหมาะสำหรับข้อมูลปกติ, QuoteStyle.All เหมาะสำหรับ CSV หรือข้อมูลที่มีคอมมา

## คำถามที่พบบ่อย

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

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

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

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

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

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

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

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

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

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

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

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

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: Table.CombineColumns](https://learn.microsoft.com/en-us/powerquery-m/table-combinecolumns) _(official)_
- [PowerQuery.how - Table.CombineColumns](https://powerquery.how/table-combinecolumns/) _(article)_

---

_Source: [https://www.thepexcel.com/functions/power-query/table-functions/table-combinecolumns/](https://www.thepexcel.com/functions/power-query/table-functions/table-combinecolumns/)_
