Thep Excel

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

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

= Table.ColumnNames(table as table) as list

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
7/10

Difficulty
2/10

Usefulness
7/10

Syntax & Arguments

= Table.ColumnNames(table as table) as list

Argument Type Required Default Description
table table Yes ตารางที่ต้องการดึงชื่อคอลัมน์

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 รายการตามลำดับจากซ้ายไปขวา
Power Query Formula:

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

Result:

{"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
Power Query Formula:

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

Result:

3

ตัวอย่างการตรวจสอบว่าคอลัมน์มีอยู่หรือไม่
let SalesTable = Table.FromRecords({ [OrderID = 1, CustomerName = "Alice", Amount = 500], [OrderID = 2, CustomerName = "Bob", Amount = 1200] }), ColumnNames = T…
ตรวจสอบว่าคอลัมน์ "Amount" มีอยู่ในตารางหรือไม่ โดยใช้ List.Contains ซึ่งมีประโยชน์สำหรับ error handling
Power Query Formula:

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

Result:

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
Power Query Formula:

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

Result:

{"Email"}

FAQs

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

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

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

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

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

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

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

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

Resources & Related

Additional Notes

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

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

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

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

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

Leave a Reply

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