Thep Excel

Table.RenameColumns – เปลี่ยนชื่อคอลัมน์ในตาราง

Table.RenameColumns ใช้สำหรับเปลี่ยนชื่อคอลัมน์หนึ่งหรือหลายคอลัมน์ในตารางพร้อมกัน โดยส่งผ่าน list ของ rename pairs {ชื่อเก่า, ชื่อใหม่}

=Table.RenameColumns(table as table, renames as list, optional missingField as nullable number) as table

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
9/10

Difficulty
2/10

Usefulness
9/10

Syntax & Arguments

=Table.RenameColumns(table as table, renames as list, optional missingField as nullable number) as table

Argument Type Required Default Description
table table Yes ตารางที่ต้องการเปลี่ยนชื่อคอลัมน์
renames list Yes List ของ Rename Pairs โดยแต่ละ Pair คือ {ชื่อเก่า, ชื่อใหม่} เช่น {{“OldName”, “NewName”}} สำหรับเปลี่ยนชื่อเดียว หรือ {{“Old1”, “New1”}, {“Old2”, “New2”}} สำหรับหลายชื่อ
missingField number Optional กำหนดพฤติกรรมเมื่อไม่พบคอลัมน์ที่ต้องการเปลี่ยนชื่อ สามารถใช้ MissingField.Ignore (ข้ามผ่าน) หรือ MissingField.UseNull (ใช้ Null) ถ้าไม่ระบุจะ throw Error

How it works

จัดระเบียบ Header

เปลี่ยนชื่อคอลัมน์ที่ได้มาจาก Source ให้เป็นชื่อที่เข้าใจง่ายและสอดคล้องกัน

แก้ไขชื่อคอลัมน์ผิดพลาด

เมื่อชื่อคอลัมน์ถูกโหลดมาผิดพลาด สามารถแก้ไขได้ทันทีใน Power Query

Examples

เปลี่ยนชื่อคอลัมน์เดียว
let Sales = Table.FromRecords( {{[ProductID = 1, Name = "Laptop", Amount = 15000]}, {[ProductID = 2, Name = "Mouse", Amount = 500]}} ), Renamed = Table.RenameCo…
เปลี่ยนชื่อคอลัมน์ ProductID เป็น รหัสสินค้า ส่วนคอลัมน์อื่นๆ ยังคงเป็นชื่อเดิม
Power Query Formula:

let
    Sales = Table.FromRecords(
        {{[ProductID = 1, Name = "Laptop", Amount = 15000]},
         {[ProductID = 2, Name = "Mouse", Amount = 500]}}
    ),
    Renamed = Table.RenameColumns(Sales, {{"ProductID", "รหัสสินค้า"}})
in
    Renamed

Result:

Table with columns: รหัสสินค้า, Name, Amount

เปลี่ยนชื่อหลายคอลัมน์พร้อมกัน
let CustomerData = Table.FromRecords( {{[CustID = 1, FullName = "Alice", PhoneNum = "081-xxx"]}, {[CustID = 2, FullName = "Bob", PhoneNum = "082-yyy"]}} ), Rena…
เปลี่ยนชื่อ 3 คอลัมน์พร้อมกัน ใช้ double curly braces {{}} สำหรับแต่ละ pair ส่วนตัวผมชอบการใช้งานแบบนี้มาก เพราะดูอ่านง่ายและเป็นระเบียบ 😎
Power Query Formula:

let
    CustomerData = Table.FromRecords(
        {{[CustID = 1, FullName = "Alice", PhoneNum = "081-xxx"]},
         {[CustID = 2, FullName = "Bob", PhoneNum = "082-yyy"]}}
    ),
    Renamed = Table.RenameColumns(CustomerData, 
        {{"CustID", "Customer ID"}, 
         {"FullName", "Full Name"}, 
         {"PhoneNum", "Phone Number"}})
in
    Renamed

Result:

Table with columns: Customer ID, Full Name, Phone Number

จัดการคอลัมน์ที่หาไม่เจอ
let Data = Table.FromRecords( {{[OrderID = 1, OrderDate = "2025-01-01"]}, {[OrderID = 2, OrderDate = "2025-01-02"]}} ), Renamed = Table.RenameColumns(Data, {{"O…
ถ้าไม่ใส่ MissingField.Ignore จะเกิด Error ทันที แต่เวลาใส่มันจะข้ามคอลัมน์ที่หาไม่เจอไปโดยไม่มีการบ่น ที่ต้องระวังคือมันจะข้ามผ่านเฉยๆ ไม่ได้เพิ่มคอลัมน์ใหม่นะครับ
Power Query Formula:

let
    Data = Table.FromRecords(
        {{[OrderID = 1, OrderDate = "2025-01-01"]},
         {[OrderID = 2, OrderDate = "2025-01-02"]}}
    ),
    Renamed = Table.RenameColumns(Data,
        {{"OrderID", "Order ID"}, 
         {"NonExistentColumn", "New Name"}},
        MissingField.Ignore)
in
    Renamed

Result:

Table with columns: Order ID, OrderDate (ชื่อ NonExistentColumn ถูกข้ามผ่านโดยไม่เกิด Error)

เปลี่ยนชื่อคอลัมน์ตาม Naming Standard
let RawData = Table.FromRecords( {{[prod_id = 1, prod_name = "A", unit_price = 100]}, {[prod_id = 2, prod_name = "B", unit_price = 200]}} ), RenamingList = {{"p…
Use case ที่บ่อยมาก คือเวลา Import Data จาก Database ที่ใช้ naming convention แบบ snake_case (prod_id) แล้วต้องเปลี่ยนเป็น PascalCase (ProductID) ให้เป็นมาตรฐาน ส่วนตัวผมมักทำขั้นตอนนี้เป็นขั้นตอนแรกของ Data Cleaning เลยครับ 💡
Power Query Formula:

let
    RawData = Table.FromRecords(
        {{[prod_id = 1, prod_name = "A", unit_price = 100]},
         {[prod_id = 2, prod_name = "B", unit_price = 200]}}
    ),
    RenamingList = {{"prod_id", "ProductID"}, 
                    {"prod_name", "ProductName"}, 
                    {"unit_price", "UnitPrice"}},
    Cleaned = Table.RenameColumns(RawData, RenamingList)
in
    Cleaned

Result:

Table with columns: ProductID, ProductName, UnitPrice (เปลี่ยนจาก snake_case เป็น PascalCase)

FAQs

ชื่อคอลัมน์เก่าต้องตรงเป๊ะไหม?

ต้องตรงเป๊ะครับ เพราะ Power Query เป็น Case Sensitive (สำคัญ Capital/Lowercase) และสำคัญช่องว่าง (Space) ด้วย ถ้าพิมพ์เสีย “ProductId” แทน “ProductID” มันจะหาไม่เจอและเกิด Error

ถ้าไม่พบคอลัมน์เก่าที่ต้องการเปลี่ยนชื่อ?

โดยปกติจะเกิด Error ครับ แต่สามารถใช้ MissingField.Ignore เพื่อข้ามผ่านได้ ไม่ว่าจะหาเจอหรือไม่เจอก็จะ Rename ชื่อที่เจออยู่เท่านั้นค่ะ

สามารถเปลี่ยนชื่อคอลัมน์เป็นชื่อที่มีอยู่แล้วได้ไหม?

ได้ครับ แต่มันจะเกิด Error เพราะจะทำให้มีชื่อคอลัมน์ซ้ำกัน Power Query ไม่อนุญาตให้มีชื่อคอลัมน์ซ้ำ ต้องระวังจุดนี้นะครับ

ต่างกับ Table.TransformColumnNames ยังไง?

Table.RenameColumns เปลี่ยนชื่อเฉพาะที่ระบุ แต่ Table.TransformColumnNames ใช้ function เพื่อแปลงชื่อทุกคอลัมน์ เช่นต้องการเปลี่ยนทั้งหมดเป็น UPPER CASE

Resources & Related

Additional Notes

ฟังก์ชัน Table.RenameColumns ใช้เพื่อเปลี่ยนชื่อคอลัมน์ในตาราง โดยที่สำคัญคือสามารถเปลี่ยนชื่อได้พร้อมกันหลายคอลัมน์ในครั้งเดียว

ที่เจ๋งคือมันรับ List ของ Rename Pairs ได้อย่างสะดวก ทำให้ Code มันอ่านง่ายมากเมื่อเทียบกับการเปลี่ยนชื่อทีละคอลัมน์ ส่วนตัวผมใช้กับ Data Cleaning บ่อยมากครับ เพราะมักต้องจัดระเบียบชื่อคอลัมน์ให้เป็นมาตรฐาน

ที่ต้องระวังคือ Power Query มัน Case Sensitive ครับ ถ้าชื่อเก่าไม่ตรงเป๊ะ (เลือก Space สั้นยาว) จะเกิด Error แบบเพิ่มเติม ซึ่งเราสามารถจัดการได้ด้วย missingField parameter ครับ 😎

Leave a Reply

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