Thep Excel

Table.ColumnNamesดึงชื่อคอลัมน์จากตาราง

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

fx
= Table.ColumnNames(table) as list

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
table table ตารางที่ต้องการดึงชื่อคอลัมน์

Additional Notes

Table.ColumnNames ใช้สำหรับดึงชื่อคอลัมน์จากตาราง Power Query ออกมาเป็นลิสต์ข้อความ

มี 1 parameter ที่ต้องส่ง:
– table: ตารางที่ต้องการดึงชื่อคอลัมน์

ส่งกลับค่า: ลิสต์ของข้อความ (text list) ที่มีชื่อคอลัมน์ทั้งหมดในลำดับจากซ้ายไปขวา

ที่เจ๋งคือ ฟังก์ชันนี้ช่วยให้เราสามารถเข้าถึงชื่อคอลัมน์แบบ dynamic ได้ ไม่จำเป็นต้องพิมพ์ชื่อคอลัมน์เอง เพราะวาไม่รู้ว่า schema จะเป็นแบบไหน

ส่วนตัวผม มักใช้ Table.ColumnNames เมื่อต้องการตรวจสอบว่าคอลัมน์ที่ต้องการมีอยู่หรือไม่ หรือเมื่อต้องสร้าง transformation ที่ทำงานกับตาราง schema ต่างๆ โดยไม่รู้ชื่อคอลัมน์ล่วงหน้า มันช่วยให้โปรแกรม flexible และ reusable ได้มากจริงๆ 😎

How it works

ตรวจสอบ Header ของตาราง

ใช้เพื่อดูว่าชื่อคอลัมน์ในตารางถูกต้องตามที่คาดไว้หรือไม่ หรือมีคอลัมน์ที่ไม่รู้จักปะปนมา

สร้าง Dynamic Column List

ใช้เป็น Input สำหรับฟังก์ชันที่ต้องการ List ของชื่อคอลัมน์ เช่น Table.SelectColumns

Examples

ตัวอย่างพื้นฐาน – ดึงชื่อคอลัมน์จากตารางง่ายๆlet SalesTable = Table.FromRecords({ [OrderID = 1, CustomerName = "Alice", Amount = 500], [OrderID = 2, CustomerName = "Bob", Amount = 1200] }), ColumnNames = T…

ดึงชื่อคอลัมน์ทั้งหมดจาก SalesTable และส่งกลับเป็นลิสต์ข้อความ 3 รายการตามลำดับจากซ้ายไปขวา

fx
let
SalesTable = Table.FromRecords({
[OrderID = 1, CustomerName = "Alice", Amount = 500],
[OrderID = 2, CustomerName = "Bob", Amount = 1200]
}),
ColumnNames = Table.ColumnNames(SalesTable)
in
ColumnNames

ผลลัพธ์{"OrderID", "CustomerName", "Amount"}
ตัวอย่างการนับจำนวนคอลัมน์let SalesTable = Table.FromRecords({ [OrderID = 1, CustomerName = "Alice", Amount = 500], [OrderID = 2, CustomerName = "Bob", Amount = 1200] }), ColumnCount = L…

นับจำนวนคอลัมน์โดยใช้ Table.ColumnNames ร่วมกับ List.Count เพื่อทำความเข้าใจขนาด schema

fx
let
SalesTable = Table.FromRecords({
[OrderID = 1, CustomerName = "Alice", Amount = 500],
[OrderID = 2, CustomerName = "Bob", Amount = 1200]
}),
ColumnCount = List.Count(Table.ColumnNames(SalesTable))
in
ColumnCount

ผลลัพธ์3
ตัวอย่างการตรวจสอบว่าคอลัมน์มีอยู่หรือไม่let SalesTable = Table.FromRecords({ [OrderID = 1, CustomerName = "Alice", Amount = 500], [OrderID = 2, CustomerName = "Bob", Amount = 1200] }), ColumnNames = T…

ตรวจสอบว่าคอลัมน์ "Amount" มีอยู่ในตารางหรือไม่ โดยใช้ List.Contains ซึ่งมีประโยชน์สำหรับ error handling

fx
let
SalesTable = Table.FromRecords({
[OrderID = 1, CustomerName = "Alice", Amount = 500],
[OrderID = 2, CustomerName = "Bob", Amount = 1200]
}),
ColumnNames = Table.ColumnNames(SalesTable),
HasAmountColumn = List.Contains(ColumnNames, "Amount")
in
HasAmountColumn

ผลลัพธ์true
ตัวอย่างการกรองคอลัมน์ที่ขึ้นต้นด้วยตัวอักษรเฉพาะlet SourceTable = Table.FromRecords({ [ID = 1, Name = "Alice", Email = "alice@test.com", Phone = "123-4567"], [ID = 2, Name = "Bob", Email = "bob@test.com", Pho…

กรองชื่อคอลัมน์ที่ขึ้นต้นด้วยตัวอักษร "E" เพื่อใช้สำหรับการเลือกคอลัมน์แบบ dynamic

fx
let
SourceTable = Table.FromRecords({
[ID = 1, Name = "Alice", Email = "alice@test.com", Phone = "123-4567"],
[ID = 2, Name = "Bob", Email = "bob@test.com", Phone = "987-6543"]
}),
AllColumns = Table.ColumnNames(SourceTable),
FilteredColumns = List.Select(AllColumns, each Text.StartsWith(_, "E"))
in
FilteredColumns

ผลลัพธ์{"Email"}

FAQs

Table.ColumnNames ทำงานกับตาราง empty ได้หรือไม่?+

ได้ครับ มันจะคืนค่าลิสต์ของชื่อคอลัมน์เหมือนเดิม แม้ว่าตารางจะไม่มีแถวข้อมูล เพราะชื่อคอลัมน์ยังคงเป็นส่วนหนึ่งของ schema และไม่ขึ้นกับจำนวนแถว

ผลลัพธ์ที่ได้เป็นลิสต์เท่านั้น ฉันจะแปลงเป็นตารางได้ไหม?+

ได้ใช้ #table() เพื่อสร้างตารางจากลิสต์ชื่อคอลัมน์ หรือใช้ List.Buffer() สำหรับการจัดการลิสต์ของคอลัมน์ที่มีขนาดใหญ่

ลำดับของชื่อคอลัมน์ที่ส่งกลับคืออะไร?+

เป็นลำดับที่ปรากฏในตารางจากซ้ายไปขวา ตามลำดับที่กำหนดไว้ในตาราง หากคุณใช้ Table.ReorderColumns() มาก่อน ลำดับก็จะเปลี่ยนไปด้วย

ต่างกับ Table.ColumnsOfType() อย่างไร?+

Table.ColumnNames() ดึงชื่อคอลัมน์ทั้งหมด ส่วน Table.ColumnsOfType() ดึงเฉพาะชื่อคอลัมน์ที่มีชนิดข้อมูลเฉพาะเท่านั้น เช่น type number หรือ type text

Resources & Related

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

ฟังก์ชันนี้Table.ColumnNamesTable functions
Table functions (6)
Table.Column

Table.Column ดึงค่าจากคอลัมน์เฉพาะออกมาจากตาราง และคืนค่าเป็น List เพื่อให้สามารถนำไปประมวลผลต่อได้

Table.PromoteHeaders

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

Table.RenameColumns

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

Table.ReorderColumns

จัดเรียงลำดับคอลัมน์ในตารางใหม่ตามลำดับที่ต้องการ พร้อมจัดการกรณีคอลัมน์หายไป

Table.TransformColumnNames

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

Table.Unpivot

Table.Unpivot แปลงคอลัมน์ที่ระบุให้กลายเป็นแถว (Unpivot) โดยสร้าง 2 คอลัมน์ใหม่ คอลัมน์แรกเก็บชื่อคอลัมน์เดิม (Attribute) และคอลัมน์ที่สองเก็บค่า (Value) ฟังก์ชันนี้จะข้ามค่า null โดยอัตโนมัติ เหมาะสำหรับเตรียมข้อมูลแบบ Wide Format ให้กลายเป็น Long Format สำหรับใช้ใน Power BI หรือ Pivot Table

List functions (1)
List.Contains

List.Contains จะคืนค่า true หาก value ที่กำหนดเป็นสมาชิกของ List และคืนค่า false หากไม่พบ สามารถระบุ Comparer เพื่อกำหนดว่าจะให้ตรวจสอบแบบ Case Sensitive หรือ Case Insensitive ได้

Record functions (1)
Record.FieldNames

ฟังก์ชันสำหรับดึงรายชื่อ Field ทั้งหมดจาก Record และคืนค่าเป็น List ของ Text

Comments

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