Thep Excel

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

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

fx
=Table.RenameColumns(table, renames, [missingField]) as table

ความนิยม9/10
ความยาก2/10
ประโยชน์9/10

อัปเดต 3 December 2025

Syntax & Arguments

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

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

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

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

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

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 เป็น รหัสสินค้า ส่วนคอลัมน์อื่นๆ ยังคงเป็นชื่อเดิม

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

ผลลัพธ์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 ส่วนตัวผมชอบการใช้งานแบบนี้มาก เพราะดูอ่านง่ายและเป็นระเบียบ 😎

fx
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

ผลลัพธ์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 ทันที แต่เวลาใส่มันจะข้ามคอลัมน์ที่หาไม่เจอไปโดยไม่มีการบ่น ที่ต้องระวังคือมันจะข้ามผ่านเฉยๆ ไม่ได้เพิ่มคอลัมน์ใหม่นะครับ

fx
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

ผลลัพธ์Table with columns: Order ID, OrderDate (ชื่อ NonExistentColumn ถูกข้ามผ่านโดยไม่เกิด Error)
เปลี่ยนชื่อคอลัมน์ตาม Naming Standardlet 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 เลยครับ 💡

fx
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

ผลลัพธ์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

ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.RenameColumns จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้Table.RenameColumnsTable functions
Table functions (6)
Table.AddColumn

Table.AddColumn เพิ่มคอลัมน์ใหม่ลงในตารางโดยคำนวณค่าจากฟังก์ชันที่กำหนด ใช้คำสั่ง each เพื่ออ้างอิงข้อมูลในแต่ละแถว เช่น each [Price] * [Quantity] สามารถระบุชนิดข้อมูลได้เพื่อเพิ่มประสิทธิภาพและป้องกันข้อผิดพลาดจากการคาดเดาชนิดข้อมูล ทำงานแบบทีละแถวและเหมาะสำหรับสร้างคอลัมน์คำนวณ รวมข้อมูล ใช้เงื่อนไข และการแปลงข้อมูลต่างๆ ใช้ร่วมกับฟังก์ชัน Table.TransformColumns สำหรับแก้ไขคอลัมน์เดิม Table.AddIndexColumn สำหรับเพิ่มหมายเลขลำดับ Table.SelectRows สำหรับกรองแถว Table.FromRecords สำหรับสร้างตารางจากข้อมูล Text.Combine สำหรับรวมข้อความ Number.Round สำหรับปัดเศษ Date.Year สำหรับดึงค่าปี และ Text.Upper สำหรับแปลงเป็นตัวพิมพ์ใหญ่ เพื่อสร้างกระบวนการแปลงข้อมูลที่สมบูรณ์

Table.ColumnNames

Table.ColumnNames ดึงชื่อคอลัมน์ทั้งหมดจากตาราง และส่งกลับมาเป็นลิสต์ข้อความ ซึ่งจำเป็นสำหรับการตรวจสอบ schema แบบ dynamic

Table.PromoteHeaders

Table.PromoteHeaders เลื่อนข้อมูลในแถวแรกของตารางขึ้นมาเป็นชื่อคอลัมน์ และลบแถวนั้นออกจากส่วนข้อมูล รองรับพารามิเตอร์เสริม options เป็น record ที่มีฟิลด์ PromoteAllScalars สำหรับอนุญาตให้ค่าที่ไม่ใช่ข้อความ เช่น ตัวเลขและวันที่ ถูกแปลงเป็นชื่อคอลัมน์ได้ และ Culture สำหรับกำหนดรูปแบบการแปลงค่าตามภูมิภาค
.
ที่เจ๋งคือ PromoteAllScalars=true ช่วยให้หัวตารางที่เป็นตัวเลขหรือวันที่ก็ใช้ได้ ไม่ติดว่าต้องเป็นข้อความอย่างเดียว

Table.RemoveColumns

Table.RemoveColumns ใช้ลบคอลัมน์เดียวหรือหลายคอลัมน์จาก table ครั้งเดียว เป็นวิธีที่สะดวกเมื่อต้องการลบ column ที่ไม่ต้องการ เช่น unwanted columns จากการโหลด Excel หรือ column ชั่วคราวหลังใช้คำนวณเสร็จ

Table.SelectColumns

Table.SelectColumns ใช้สำหรับเลือกคอลัมน์เฉพาะจากตารางและสร้างตารางใหม่ที่มีเฉพาะคอลัมน์เหล่านั้น

Table.TransformColumnNames

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

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่