---
title: Table.Transpose – สลับแกนตาราง (Transpose)
url: https://www.thepexcel.com/functions/power-query/table-functions/table-transpose/
type: function-explainer
program: Power Query
syntax: "Table.Transpose(table as table, optional columns as any) as table"
date: 2025-12-03
updated: 2025-12-23
scores:
  popularity: 7
  difficulty: 3
  usefulness: 7
---

# Table.Transpose – สลับแกนตาราง (Transpose)

> Table.Transpose จะกลับด้านตาราง คล้ายกับการ Copy > Paste Special > Transpose ใน Excel โดยข้อมูลในแถว

## คำอธิบาย

Table.Transpose จะกลับด้านตาราง คล้ายกับการ Copy > Paste Special > Transpose ใน Excel โดยข้อมูลในแถวที่ 1 จะกลายเป็นคอลัมน์ที่ 1 แถวที่ 2 เป็นคอลัมน์ที่ 2 ไปเรื่อยๆ

## Syntax

```excel
Table.Transpose(table as table, optional columns as any) as table
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| table | Yes | table |  | ตารางที่ต้องการสลับแกน (ต้องส่งเป็น table type) |
| columns | No | any | null | พารามิเตอร์ทางเลือก (ไม่ค่อยได้ใช้) ใช้เพื่อกำหนดว่าจะ Transpose เฉพาะคอลัมน์บางตัวหรือไม่ ส่วนใหญ่ปล่อยไว้เป็น null |

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

### แก้ปัญหาตารางแนวขวาง

เมื่อข้อมูลถูกเก็บในแนวนอน (เช่น เดือนเป็นคอลัมน์) ต้องการหมุนกลับมาเป็นแนวตั้งเพื่อ Unpivot หรือใช้งานต่อ

### ย้าย Header ที่อยู่ในแนวตั้ง

บางรายงานมี Header อยู่ในคอลัมน์แรก (Row Header) ต้อง Transpose เพื่อให้ไปอยู่แถวบนสุดก่อน Promote Headers

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: Transpose ข้อมูลแนวนอน (สลับแถวและคอลัมน์)

```excel
let
    Sales = Table.FromRows(
        {{"Bangkok", 100, 200}, {"Chiang Mai", 150, 250}},
        {"City", "Q1", "Q2"}
    ),
    Transposed = Table.Transpose(Sales)
in
    Transposed
```

**ผลลัพธ์:** `ตารางที่มี 3 แถว 2 คอลัมน์ (Column1 และ Column2)
- แถวที่ 1: [Column1 = "City", Column2 = "Bangkok", Column3 = "Chiang Mai"]
- แถวที่ 2: [Column1 = "Q1", Column2 = 100, Column3 = 150]
- แถวที่ 3: [Column1 = "Q2", Column2 = 200, Column3 = 250]`

ข้อมูลตั้งแต่ 2 แถว 3 คอลัมน์ เปลี่ยนเป็น 3 แถว 3 คอลัมน์ เมืองและค่า Q1 Q2 เดิมกลายเป็นแถวแรกของผลลัพธ์

### 2. ตัวอย่างที่ 2: Transpose + PromoteHeaders (สลับแล้วตั้งชื่อคอลัมน์)

```excel
let
    Sales = Table.FromRows(
        {{"Bangkok", 100, 200}, {"Chiang Mai", 150, 250}},
        {"City", "Q1", "Q2"}
    ),
    Transposed = Table.Transpose(Sales),
    WithHeaders = Table.PromoteHeaders(Transposed)
in
    WithHeaders
```

**ผลลัพธ์:** `ตารางมี Header: City, Bangkok, Chiang Mai (ชื่อคอลัมน์ใหม่)
- แถวที่ 1: [City = "Q1", Bangkok = 100, Chiang Mai = 150]
- แถวที่ 2: [City = "Q2", Bangkok = 200, Chiang Mai = 250]`

หลังจาก Transpose เลื่อนแถวแรกขึ้นเป็น Header ทำให้ข้อมูลอ่านง่ายขึ้นเยอะ ตอนนี้เมืองเป็นชื่อคอลัมน์แล้ว

### 3. ตัวอย่างที่ 3: DemoteHeaders → Transpose → PromoteHeaders (เก็บ Header เดิม)

```excel
let
    Source = Table.FromRows(
        {{"Fred", 30}, {"Alice", 28}},
        {"Name", "Age"}
    ),
    Demoted = Table.DemoteHeaders(Source),
    Transposed = Table.Transpose(Demoted),
    Restored = Table.PromoteHeaders(Transposed)
in
    Restored
```

**ผลลัพธ์:** `ตารางที่มี Header: Fred, Alice
- แถวที่ 1: [Fred = "Name", Alice = "Name"]
- แถวที่ 2: [Fred = 30, Alice = 28]`

ทีแรก Demote เพื่อให้ Header (Name, Age) กลายเป็นข้อมูลแถวแรก แล้วค่อย Transpose จะได้เก็บข้อมูลชื่อเดิมไว้ในผลลัพธ์

### 4. ตัวอย่างที่ 4: เมนเชน Key-Value Pairs (ใช้ชีวิตจริง)

```excel
let
    Attributes = Table.FromRecords({
        [Attribute = "Product", January = "Laptop", February = "Laptop", March = "Tablet"],
        [Attribute = "Price", January = 50000, February = 45000, March = 15000],
        [Attribute = "Stock", January = 10, February = 8, March = 25]
    }),
    Transposed = Table.Transpose(Attributes),
    WithHeaders = Table.PromoteHeaders(Transposed)
in
    WithHeaders
```

**ผลลัพธ์:** `ตารางแสดงข้อมูล Product, Price, Stock สำหรับแต่ละเดือน (January, February, March เป็นแถว)
- แถวที่ 1: [Attribute = "Product", Month = "Laptop"]
- แถวที่ 2: [Attribute = "Price", Month = 50000]
- แถวที่ 3: [Attribute = "Stock", Month = 10]`

ตัวอย่างนี้คล้ายการแปลง Pivot Table ที่มา Rotated (ต้อง Unpivot) ข้อมูลกลับเป็นรูปแบบยาวเพื่อให้ Power BI อ่านถูก ทดแทนที่ต้องใช้ Unpivot Column ด้วย

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

- Transpose + PromoteHeaders = วิธีจัดการข้อมูล Pivot หรือ Wide Format ที่ต้องแปลงเป็น Long Format

- ถ้าต้องเก็บชื่อคอลัมน์เดิม ต้อง DemoteHeaders → Transpose → PromoteHeaders (คำตอบรักษาข้อมูล 100%)

- Transpose ใช้บ่อยกับข้อมูลที่มีแถวเป็น Attributes และคอลัมน์เป็น Values (ตรงกันข้ามกับ Unpivot)

- Power Query มี Unpivot Column ให้ใช้ด้วย ถ้าข้อมูล Wide Format ให้ใช้ Unpivot แทน เพราะมันเก็บชื่อคอลัมน์ไว้อัตโนมัติ

- ทดสอบ Transpose ด้วยข้อมูลเล็กๆ ก่อน เพราะถ้า Transpose ลืมขั้นตอนหรือเรียงลำดับไม่ถูก มันจะบ้าน

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

**Q: ชื่อคอลัมน์จะหายไปไหม?**

ใช่ครับ เมื่อ Transpose ชื่อคอลัมน์เดิมจะหายไป และ Power Query จะสร้างชื่อคอลัมน์ใหม่ (Column1, Column2...) ให้แทน ถ้าต้องการเก็บชื่อคอลัมน์เดิมเป็นข้อมูล ต้องใช้ Table.DemoteHeaders ก่อน Transpose จากนั้นค่อย Table.PromoteHeaders เพื่อยกแถวแรกขึ้นเป็น Header ใหม่

**Q: ใช้ Transpose ตรงไหนบ้าง?**

ส่วนใหญ่ใช้เมื่อข้อมูลมาในรูปแบบ Key-Value หรือ Wide Format ที่ต้องแปลงเป็น Long Format ให้อ่านง่ายขึ้น หรือเวลาได้ข้อมูลแล้วแถวกับคอลัมน์สลับกัน ก็ Transpose เลย มันช่วยอะไรก็ไม่มีแต่ใช้น้อย เพราะส่วนใหญ่ข้อมูลประมาณนี้อยู่แล้ว

**Q: ทำไมถึงต้อง DemoteHeaders ก่อน Transpose?**

เพราะ Transpose เมื่อสลับแถวกับคอลัมน์ Header เดิมจะหายไป ถ้าต้องการเก็บข้อมูล Header ต้องลดระดับเป็นข้อมูลแถวก่อนด้วย DemoteHeaders ทำให้สามารถ Transpose ได้สมบูรณ์

**Q: ตัวอย่าง columns parameter คืออะไร?**

พารามิเตอร์ columns นี่เป็นทางเลือกขั้นสูง ใช้เพื่อระบุคอลัมน์ที่ต้องการ Transpose โดยปล่อยคอลัมน์อื่นไว้ ในทางปฏิบัติ 99% คนใช้ Table.Transpose โดยส่งแค่ parameter แรก (table) ตัว columns มักจะ null หรือไม่ส่ง

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

- [Microsoft Learn: Table.Transpose](https://learn.microsoft.com/en-us/powerquery-m/table-transpose) _(official)_
- [PowerQuery.how - Table.Transpose](https://powerquery.how/table-transpose/) _(article)_
- [Microsoft Learn: Table.PromoteHeaders](https://learn.microsoft.com/en-us/powerquery-m/table-promoteheaders) _(official)_
- [Microsoft Learn: Table.DemoteHeaders](https://learn.microsoft.com/en-us/powerquery-m/table-demoteheaders) _(official)_

---

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