---
title: Table.TransformColumnNames – แปลงชื่อคอลัมน์ด้วยฟังก์ชัน
url: https://www.thepexcel.com/functions/power-query/table-functions/table-transformcolumnnames/
type: function-explainer
program: Power Query
syntax: "Table.TransformColumnNames(table as table, nameGenerator as function, optional options as nullable record) as table"
date: 2025-12-03
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 4
  usefulness: 6
---

# Table.TransformColumnNames – แปลงชื่อคอลัมน์ด้วยฟังก์ชัน

> Table.TransformColumnNames ใช้ฟังก์ชันแปลงชื่อ (Name Generator) เพื่อเปลี่ยนชื่อคอลัมน์ทั้งหมดในตารา

## คำอธิบาย

Table.TransformColumnNames ใช้ฟังก์ชันแปลงชื่อ (Name Generator) เพื่อเปลี่ยนชื่อคอลัมน์ทั้งหมดในตาราง เหมาะสำหรับจัดรูปแบบชื่อคอลัมน์เป็นแบบเดียวกัน เช่น ตัวพิมพ์ใหญ่ ลบช่องว่าง หรือเพิ่ม Prefix

## Syntax

```excel
Table.TransformColumnNames(table as table, nameGenerator as function, optional options as nullable record) as table
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| table | Yes | table |  | ตารางที่ต้องการแปลงชื่อคอลัมน์ |
| nameGenerator | Yes | function |  | ฟังก์ชันที่รับชื่อคอลัมน์เก่า (แทนด้วย _ หรือตัวแปรอื่น) และส่งคืนชื่อใหม่ |
| options | No | record | null | ตัวเลือก (optional) เช่น MaxLength สำหรับจำกัดความยาวชื่อคอลัมน์ หรือ Comparer สำหรับการเปรียบเทียบ |

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

### แปลงชื่อคอลัมน์เป็นตัวพิมพ์ใหญ่ทั้งหมด

เพื่อสร้างมาตรฐานชื่อคอลัมน์ที่ชัดเจนและสอดคล้องกัน

### ลบอักขระพิเศษออกจากชื่อคอลัมน์

เช่น ลบเครื่องหมายวรรคตอน หรือสัญลักษณ์ที่ไม่ต้องการออกจากชื่อคอลัมน์

### เพิ่ม Prefix/Suffix ให้ชื่อคอลัมน์

เช่น เพิ่ม 'Data_' นำหน้าชื่อคอลัมน์ทั้งหมด

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: แปลงชื่อคอลัมน์เป็นตัวพิมพ์ใหญ่ทั้งหมด

```excel
let
    Source = Table.FromRecords({{"firstName", "lastName", "email"}}, {"First Name", "Last Name", "Email"}),
    Transformed = Table.TransformColumnNames(Source, each Text.Upper(_))
in
    Transformed
```

**ผลลัพธ์:** `[First Name, Last Name, Email] → [FIRST NAME, LAST NAME, EMAIL]`

ใช้ Text.Upper กับชื่อคอลัมน์แต่ละชื่อ (แทนด้วย _) เพื่อแปลงเป็นตัวพิมพ์ใหญ่ทั้งหมด เมื่อไปทำ Report ต้องให้หน้าตาเหมือน 'OFFICIAL' แบบนี้

### 2. ตัวอย่างที่ 2: ลบช่องว่างในชื่อคอลัมน์

```excel
let
    Source = Table.FromRecords({{1, 2}}, {"First Name", "Last Name"}),
    Transformed = Table.TransformColumnNames(Source, each Text.Replace(_, " ", ""))
in
    Transformed
```

**ผลลัพธ์:** `[First Name, Last Name] → [FirstName, LastName]`

ใช้ Text.Replace เพื่อลบช่องว่างทั้งหมด มีประโยชน์มากเวลาต้อง Merge กับข้อมูลอื่นที่ชื่อคอลัมน์ไม่มีช่องว่าง

### 3. ตัวอย่างที่ 3: เพิ่ม Prefix ให้กับชื่อคอลัมน์

```excel
let
    Source = Table.FromRecords({{1, 2}}, {"Amount", "Date"}),
    Transformed = Table.TransformColumnNames(Source, each "DIM_" & _)
in
    Transformed
```

**ผลลัพธ์:** `[Amount, Date] → [DIM_Amount, DIM_Date]`

เพิ่มคำว่า "DIM_" นำหน้าชื่อคอลัมน์ทั้งหมด เนื่องจากต้อง Follow ชื่อตามมาตรฐาน Star Schema หรือ Naming Convention บางที่ 555

### 4. ตัวอย่างที่ 4: ลบอักขระพิเศษและแปลงเป็น PascalCase

```excel
let
    Source = Table.FromRecords({{1, 2}}, {"Order-ID_123", "Customer@Name"}),
    Transformed = Table.TransformColumnNames(Source, 
        each Text.Replace(Text.Replace(Text.Replace(_, "-", ""), "_", ""), "@", ""))
in
    Transformed
```

**ผลลัพธ์:** `[Order-ID_123, Customer@Name] → [OrderID123, CustomerName]`

ลบอักขระพิเศษ (-_@) เพื่อให้ชื่อคอลัมน์เป็นตัวอักษรและตัวเลขเท่านั้น ก่อนที่จะใช้ในการเขียน DAX หรือ M Code

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

- ผมแนะนำให้เทส nameGenerator function ด้วยชื่อคอลัมน์จริง ก่อนใช้กับตารางจริง เพื่อให้แน่ใจว่าผลลัพธ์ออกมาตามที่ต้องการ

- ถ้า nameGenerator function มีการตัดสินใจที่ซับซ้อน (เช่น เอาชื่อที่มี underscore มาทำสิ่งหนึ่ง เอาชื่ออื่นมาทำอีกสิ่ง) ผมแนะนำให้สร้าง Custom Function ทำไว้ก่อน แล้ว Reference function นั้นใน Table.TransformColumnNames

- เอาใจช่วยเวลาใช้ Comparer option - ถ้าใช้ Comparer.OrdinalIgnoreCase มันอาจจะเกิด Duplicate Column Names ได้นะ เช่น ชื่อเดิม [Name] และ [name] อาจจะ Transform ไปเป็นชื่อเดียวกัน

- ส่วนตัวผมชอบใช้ Table.TransformColumnNames ร่วมกับ List.Transform หรือ Record.TransformFields เพื่อสร้าง Data Cleaning Pipeline ที่สะอาดและเข้าใจง่าย

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

**Q: Table.TransformColumnNames ต่างจาก Table.RenameColumns อย่างไร?**

Table.TransformColumnNames แปลงชื่อ 'ทั้งหมด' ด้วยฟังก์ชัน เหมาะงาน Mass Transformation เช่น ลบช่องว่างหรือแปลงเป็นตัวพิมพ์ใหญ่ทั้งตาราง ส่วน Table.RenameColumns เปลี่ยนชื่อเฉพาะคอลัมน์ที่ระบุชื่อเก่า-ใหม่เท่านั้น ผมแนะนำให้ใช้ TransformColumnNames เวลาต้องจัดรูปแบบเป็นแบบเดียวกัน แต่ RenameColumns ตอนเปลี่ยนชื่อคอลัมน์เฉพาะ 1-2 คอลัมน์

**Q: _ (underscore) มีความหมายอย่างไร?**

_ คือ 'ตัวแทน' (placeholder) สำหรับชื่อคอลัมน์เดิม ตอนเขียน each Text.Upper(_) มันจะเอาชื่อแต่ละคอลัมน์มา Replace ตัว _ แล้วส่งไปให้ Text.Upper ทำงาน ผมเคยนึกว่า _ มีความหมายตรงนั้นไม่ได้ เลยสับสนสำหรับตอนแรก 😅 แต่พอเข้าใจแล้ว มันก็ง่ายมาก

**Q: ถ้า nameGenerator ฟังก์ชันให้ชื่อซ้ำกันหรือเหมือนชื่อเดิม จะเกิดอะไร?**

ถ้าชื่อซ้ำกันแล้ว Power Query จะโยน Error เพราะคอลัมน์ต้องมีชื่อไม่ซ้ำกัน ถ้าให้ชื่อเหมือนเดิม มันก็จะผ่านนะ (ไม่มีการเปลี่ยนแปลง) ผมแนะนำให้เทสด้วย Table.ColumnNames(Source) ก่อน เพื่อดูว่าชื่อใหม่จะออกมาแบบไหน

**Q: ใช้ฟังก์ชันแบบซ้อนกันได้มั้ย?**

ได้สิครับ! เช่น each Text.Upper(Text.Trim(Text.Replace(_, " ", "_"))) ก็ได้ แต่ถ้ามันเยอะเกินไป ผมแนะนำให้เขียน Custom Function ทำไว้ก่อน แล้วใช้ function นั้นใน nameGenerator แทน จะดูสะอาดและ Maintainable ขึ้นเยอะ

## ฟังก์ชันที่เกี่ยวข้อง

- [Table.RenameColumns – เปลี่ยนชื่อคอลัมน์ในตาราง](https://www.thepexcel.com/functions/power-query/table-functions/table-renamecolumns/)
- [Text.Upper – แปลงข้อความเป็นตัวอักษรใหญ่](https://www.thepexcel.com/functions/power-query/text-functions/text-upper/)
- [Text.Replace – แทนที่ข้อความใน Power Query](https://www.thepexcel.com/functions/power-query/text-functions/text-replace/)

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

- [Microsoft Learn: Table.TransformColumnNames](https://learn.microsoft.com/en-us/powerquery-m/table-transformcolumnnames) _(official)_
- [PowerQuery.how - Table.TransformColumnNames](https://powerquery.how/table-transformcolumnnames/) _(article)_
- [Microsoft Learn: Text Functions in Power Query M](https://learn.microsoft.com/en-us/powerquery-m/text-functions) _(official)_

---

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