Thep Excel

Table.PromoteHeaders – เลื่อนแถวแรกเป็นหัวตาราง

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

=Table.PromoteHeaders(table as table, optional options as nullable record) as table

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
10/10

Difficulty
2/10

Usefulness
10/10

Syntax & Arguments

=Table.PromoteHeaders(table as table, optional options as nullable record) as table

Argument Type Required Default Description
table table Yes ตารางข้อมูลที่ต้องการเลื่อนแถวแรกขึ้นเป็นส่วนหัว
options nullable record Optional null Record ที่มีฟิลด์ PromoteAllScalars (true/false) สำหรับอนุญาตทุกประเภทข้อมูล และ Culture (เช่น “en-US”) สำหรับกำหนดรูปแบบการแปลง

How it works

จัดการไฟล์ Excel และ CSV ที่นำเข้า

เมื่อนำเข้าไฟล์ข้อมูล แถวแรกมักเป็นชื่อคอลัมน์ แต่ Power Query อาจมองเป็นข้อมูลธรรมดา ใช้ฟังก์ชันนี้เพื่อเลื่อนแถวแรกขึ้นเป็นหัวตารางอย่างถูกต้อง

ใช้หลังจากการสลับแกนตาราง (Transpose)

เมื่อใช้ Table.Transpose สลับแถวเป็นคอลัมน์ แถวแรกของผลลัพธ์มักจะเป็นส่วนหัวที่ต้องการ ใช้ Table.PromoteHeaders ตามหลังเพื่อจัดรูปแบบให้ถูกต้อง

จัดการข้อมูลที่มีหัวตารางเป็นตัวเลขหรือวันที่

เมื่อหัวตารางเป็นปี ค.ศ. (2020, 2021, 2022) หรือวันที่ ใช้ [PromoteAllScalars=true] เพื่อให้ Power Query แปลงค่าเหล่านี้เป็นชื่อคอลัมน์ได้

Examples

ตัวอย่างที่ 1: เลื่อน Header พื้นฐาน (ข้อความและตัวเลข)
let Source = Table.FromRecords({ [Column1 = "CustomerID", Column2 = "Name", Column3 = "Age"], [Column1 = 1, Column2 = "Bob", Column3 = 25], [Column1 = 2, Column…
เลื่อนแถวแรก (CustomerID, Name, Age) ขึ้นเป็นชื่อคอลัมน์ และลบแถวนั้นออกจากข้อมูล
.
ค่าที่เป็นข้อความและตัวเลขจะถูก promote โดยอัตโนมัติครับ ไม่ต้องทำอะไรเพิ่ม 😎
Power Query Formula:

let
    Source = Table.FromRecords({
        [Column1 = "CustomerID", Column2 = "Name", Column3 = "Age"],
        [Column1 = 1, Column2 = "Bob", Column3 = 25],
        [Column1 = 2, Column2 = "Alice", Column3 = 30]
    }),
    Promoted = Table.PromoteHeaders(Source)
in
    Promoted

Result:

Table: {[CustomerID=1, Name="Bob", Age=25], [CustomerID=2, Name="Alice", Age=30]}

ตัวอย่างที่ 2: Promote ทุกประเภทข้อมูล (PromoteAllScalars)
let Source = Table.FromRecords({ [Column1 = 1, Column2 = "Name", Column3 = #date(2024, 1, 1)], [Column1 = 101, Column2 = "Bob", Column3 = #date(2024, 6, 15)], […
ใช้ PromoteAllScalars=true เพื่ออนุญาตให้ทุกประเภทข้อมูล (รวมตัวเลข 1 และวันที่) ถูกแปลงเป็นชื่อคอลัมน์
.
วันที่จะแปลงเป็นข้อความในรูปแบบ default culture ซึ่งขึ้นอยู่กับการตั้งค่าระบบครับ
Power Query Formula:

let
    Source = Table.FromRecords({
        [Column1 = 1, Column2 = "Name", Column3 = #date(2024, 1, 1)],
        [Column1 = 101, Column2 = "Bob", Column3 = #date(2024, 6, 15)],
        [Column1 = 102, Column2 = "Alice", Column3 = #date(2024, 7, 20)]
    }),
    Promoted = Table.PromoteHeaders(Source, [PromoteAllScalars = true])
in
    Promoted

Result:

Table: {[1=101, Name="Bob", #"1/1/2024"=#date(2024,6,15)], ...}

ตัวอย่างที่ 3: ระบุ Culture สำหรับ format วันที่
let Source = Table.FromRecords({ [Rank = 1, Name = "Name", StartDate = #date(2024, 3, 15)], [Rank = 1, Name = "Bob", StartDate = #date(2024, 6, 20)] }), Promote…
ระบุ Culture="en-US" เพื่อให้วันที่ในหัวตารางถูก format เป็น MM/DD/YYYY (รูปแบบอเมริกัน) แทนรูปแบบ default ของระบบ
.
เหมาะสำหรับควบคุม format ให้สอดคล้องกับข้อมูลครับ ไม่งั้นบางทีรูปแบบมันอาจจะไม่ตรงกับที่คาดหวังไว้ 😅
Power Query Formula:

let
    Source = Table.FromRecords({
        [Rank = 1, Name = "Name", StartDate = #date(2024, 3, 15)],
        [Rank = 1, Name = "Bob", StartDate = #date(2024, 6, 20)]
    }),
    Promoted = Table.PromoteHeaders(Source, [PromoteAllScalars = true, Culture = "en-US"])
in
    Promoted

Result:

Table: {[1=1, Name="Bob", #"3/15/2024"=#date(2024,6,20)]}

ตัวอย่างที่ 4: หลังจาก Transpose ตาราง
let Source = Table.FromRecords({ [Metric = "Revenue", Q1 = 1000, Q2 = 1200], [Metric = "Cost", Q1 = 800, Q2 = 900] }), Transposed = Table.Transpose(Source), Pro…
หลังจาก Transpose สลับแถวเป็นคอลัมน์ แถวแรกของผลลัพธ์จะเป็น "Revenue", "Cost" ใช้ Table.PromoteHeaders เพื่อเลื่อนขึ้นเป็นชื่อคอลัมน์
.
Pattern นี้ใช้บ่อยมากในการ pivot ข้อมูลครับ คู่หูกันไปเลย 😎
Power Query Formula:

let
    Source = Table.FromRecords({
        [Metric = "Revenue", Q1 = 1000, Q2 = 1200],
        [Metric = "Cost", Q1 = 800, Q2 = 900]
    }),
    Transposed = Table.Transpose(Source),
    Promoted = Table.PromoteHeaders(Transposed)
in
    Promoted

Result:

Table: {[Revenue=1000, Cost=800], [Revenue=1200, Cost=900]}

FAQs

Table.PromoteHeaders ต่างจากปุ่ม "Use First Row as Headers" ในเมนูอย่างไร?

เป็นฟังก์ชันเดียวกัน เมื่อคลิกปุ่ม Use First Row as Headers ใน Power Query Editor จะสร้าง step ที่เรียกใช้ฟังก์ชัน Table.PromoteHeaders โดยอัตโนมัติ

ถ้าแถวแรกมีค่าว่าง (null) จะเกิดอะไรขึ้น?

คอลัมน์ที่มีค่าว่างในแถวแรกจะได้ชื่อเป็น Column1, Column2, Column3 ฯลฯ แทน ไม่ใช้ค่าว่างเป็นชื่อคอลัมน์
.
ถ้าต้องการเปลี่ยนชื่อคอลัมน์ ให้ใช้ Table.RenameColumns ตามหลังครับ

PromoteAllScalars ใช้เมื่อไร?

ใช้เมื่อหัวตารางมีค่าที่ไม่ใช่ข้อความ เช่น ปี ค.ศ. (2020, 2021, 2022) หรือวันที่ครับ
.
โดย default Table.PromoteHeaders จะ promote เฉพาะข้อความและตัวเลขเท่านั้น ถ้าต้องการให้ทุกประเภทข้อมูลถูกแปลงเป็นชื่อคอลัมน์ ต้องตั้ง PromoteAllScalars=true

สามารถใช้ Table.PromoteHeaders หลายครั้งได้ไหม?

ทำได้ แต่ไม่แนะนำครับ เพราะแต่ละครั้งจะเลื่อนแถวแรกขึ้นเป็น header ทำให้ข้อมูลหายไป 😭
.
ควรใช้ครั้งเดียวหลังจากนำเข้าข้อมูลหรือ transform ให้ได้รูปแบบที่ต้องการแล้ว

ต่างจาก Excel.Workbook useHeaders parameter อย่างไร?

Excel.Workbook useHeaders ทำงานตอนนำเข้าไฟล์ Excel โดยอัตโนมัติ ส่วน Table.PromoteHeaders เป็น transformation step ที่ทำกับตารางใดก็ได้ใน Power Query
.
ส่วนตัวผมแนะนำให้ใช้ Table.PromoteHeaders แทน useHeaders เพราะปลอดภัยกว่า (ไม่มีปัญหา culture conversion) และควบคุมได้มากกว่าครับ 💡

Resources & Related

Additional Notes

Table.PromoteHeaders ใน Power Query ใช้สำหรับเลื่อนข้อมูลในแถวแรกของตารางขึ้นไปเป็นหัวคอลัมน์
.
เคยเจอมั้ยครับว่า… พอนำเข้าไฟล์ Excel หรือ CSV แล้วหัวตารางมันยังอยู่ในส่วนข้อมูล? ฟังก์ชันนี้มันเกิดมาแก้ปัญหานี้แหละครับ 😎

Leave a Reply

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