---
title: Table.PromoteHeaders – เลื่อนแถวแรกเป็นหัวตาราง
url: https://www.thepexcel.com/functions/power-query/table-functions/table-promoteheaders/
type: function-explainer
program: Power Query
syntax: "Table.PromoteHeaders(table as table, optional options as nullable record) as table"
date: 2025-12-03
updated: 2025-12-18
scores:
  popularity: 10
  difficulty: 2
  usefulness: 10
---

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

> เลื่อนแถวแรกของตารางขึ้นเป็นชื่อคอลัมน์

## คำอธิบาย

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

## Syntax

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

**Variant**

```excel
Table.PromoteHeaders(table)
```

รูปแบบพื้นฐาน เลื่อน Header จากแถวแรก (เฉพาะข้อความและตัวเลข)

**Variant**

```excel
Table.PromoteHeaders(table, [PromoteAllScalars=true])
```

อนุญาตให้ทุกประเภทข้อมูล (รวมวันที่) เป็นชื่อคอลัมน์ได้

**Variant**

```excel
Table.PromoteHeaders(table, [PromoteAllScalars=true, Culture="en-US"])
```

ระบุ Culture สำหรับ format ค่าที่แปลงเป็นชื่อคอลัมน์

## Arguments

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

## เคสการใช้งาน

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

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

_เหมาะกับ:_ data-import

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

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

_เหมาะกับ:_ data-transformation

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

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

_เหมาะกับ:_ temporal-data

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: เลื่อน Header พื้นฐาน (ข้อความและตัวเลข)

```excel
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
```

**ผลลัพธ์:** `Table: {[CustomerID=1, Name="Bob", Age=25], [CustomerID=2, Name="Alice", Age=30]}`

เลื่อนแถวแรก (CustomerID, Name, Age) ขึ้นเป็นชื่อคอลัมน์ และลบแถวนั้นออกจากข้อมูล
.
ค่าที่เป็นข้อความและตัวเลขจะถูก promote โดยอัตโนมัติครับ ไม่ต้องทำอะไรเพิ่ม 😎

### 2. ตัวอย่างที่ 2: Promote ทุกประเภทข้อมูล (PromoteAllScalars)

```excel
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
```

**ผลลัพธ์:** `Table: {[1=101, Name="Bob", #"1/1/2024"=#date(2024,6,15)], ...}`

ใช้ PromoteAllScalars=true เพื่ออนุญาตให้ทุกประเภทข้อมูล (รวมตัวเลข 1 และวันที่) ถูกแปลงเป็นชื่อคอลัมน์
.
วันที่จะแปลงเป็นข้อความในรูปแบบ default culture ซึ่งขึ้นอยู่กับการตั้งค่าระบบครับ

### 3. ตัวอย่างที่ 3: ระบุ Culture สำหรับ format วันที่

```excel
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
```

**ผลลัพธ์:** `Table: {[1=1, Name="Bob", #"3/15/2024"=#date(2024,6,20)]}`

ระบุ Culture="en-US" เพื่อให้วันที่ในหัวตารางถูก format เป็น MM/DD/YYYY (รูปแบบอเมริกัน) แทนรูปแบบ default ของระบบ
.
เหมาะสำหรับควบคุม format ให้สอดคล้องกับข้อมูลครับ ไม่งั้นบางทีรูปแบบมันอาจจะไม่ตรงกับที่คาดหวังไว้ 😅

### 4. ตัวอย่างที่ 4: หลังจาก Transpose ตาราง

```excel
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
```

**ผลลัพธ์:** `Table: {[Revenue=1000, Cost=800], [Revenue=1200, Cost=900]}`

หลังจาก Transpose สลับแถวเป็นคอลัมน์ แถวแรกของผลลัพธ์จะเป็น "Revenue", "Cost" ใช้ Table.PromoteHeaders เพื่อเลื่อนขึ้นเป็นชื่อคอลัมน์
.
Pattern นี้ใช้บ่อยมากในการ pivot ข้อมูลครับ คู่หูกันไปเลย 😎

## หมายเหตุเพิ่มเติม

💡 **Tip**: ฟังก์ชันนี้เป็นหนึ่งในฟังก์ชันที่ใช้บ่อยที่สุดใน Power Query เพราะเกือบทุกไฟล์ที่นำเข้ามาจะมีหัวตารางในแถวแรก
.
ส่วนตัวผมแนะนำให้ใช้ร่วมกับ Excel.Workbook โดยส่ง useHeaders=null แล้วตามด้วย Table.PromoteHeaders([PromoteAllScalars=true]) เพื่อความปลอดภัยและความยืดหยุ่นครับ
.
ทำไมถึงแนะนำแบบนี้? เพราะบางทีพอให้ Excel.Workbook จัดการ header เอง มันอาจจะตีความผิด โดยเฉพาะตอนที่มีวันที่หรือตัวเลขในหัวตาราง ถ้าเราควบคุมเองจะแม่นกว่าครับ 😎

## คำถามที่พบบ่อย

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

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

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

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

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

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

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

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

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

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

## ฟังก์ชันที่เกี่ยวข้อง

- [Table.DemoteHeaders – จัดการตาราง](https://www.thepexcel.com/?post_type=function-explainer&p=37947)
- [Table.Transpose – สลับแกนตาราง (Transpose)](https://www.thepexcel.com/functions/power-query/table-functions/table-transpose/)
- [Table.RenameColumns – เปลี่ยนชื่อคอลัมน์ในตาราง](https://www.thepexcel.com/functions/power-query/table-functions/table-renamecolumns/)
- [Excel.Workbook – อ่านและแยกเนื้อหาไฟล์ Excel ทั้งหมด](https://www.thepexcel.com/functions/power-query/accessing-data-functions/excel-workbook/)
- [Table.ColumnNames – ดึงชื่อคอลัมน์จากตาราง](https://www.thepexcel.com/functions/power-query/table-functions/table-columnnames/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn - Table.PromoteHeaders Official Documentation](https://learn.microsoft.com/en-us/powerquery-m/table-promoteheaders) _(documentation)_
- [PowerQuery.how - Table.PromoteHeaders Guide](https://powerquery.how/table-promoteheaders/) _(guide)_
- [Microsoft Learn - Culture Settings in Power Query](https://learn.microsoft.com/en-us/power-query/culture-settings) _(documentation)_

---

_Source: [https://www.thepexcel.com/functions/power-query/table-functions/table-promoteheaders/](https://www.thepexcel.com/functions/power-query/table-functions/table-promoteheaders/)_
