Thep Excel

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

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

=Table.Transpose(table as table, optional columns as any) as table

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
7/10

Difficulty
3/10

Usefulness
7/10

Syntax & Arguments

=Table.Transpose(table as table, optional columns as any) as table

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

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: Transpose ข้อมูลแนวนอน (สลับแถวและคอลัมน์)
let Sales = Table.FromRows( {{"Bangkok", 100, 200}, {"Chiang Mai", 150, 250}}, {"City", "Q1", "Q2"} ), Transposed = Table.Transpose(Sales) in Transposed
ข้อมูลตั้งแต่ 2 แถว 3 คอลัมน์ เปลี่ยนเป็น 3 แถว 3 คอลัมน์ เมืองและค่า Q1 Q2 เดิมกลายเป็นแถวแรกของผลลัพธ์
Power Query Formula:

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

Result:

ตารางที่มี 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: Transpose + PromoteHeaders (สลับแล้วตั้งชื่อคอลัมน์)
let Sales = Table.FromRows( {{"Bangkok", 100, 200}, {"Chiang Mai", 150, 250}}, {"City", "Q1", "Q2"} ), Transposed = Table.Transpose(Sales), WithHeaders = Table.…
หลังจาก Transpose เลื่อนแถวแรกขึ้นเป็น Header ทำให้ข้อมูลอ่านง่ายขึ้นเยอะ ตอนนี้เมืองเป็นชื่อคอลัมน์แล้ว
Power Query Formula:

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

Result:

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

ตัวอย่างที่ 3: DemoteHeaders → Transpose → PromoteHeaders (เก็บ Header เดิม)
let Source = Table.FromRows( {{"Fred", 30}, {"Alice", 28}}, {"Name", "Age"} ), Demoted = Table.DemoteHeaders(Source), Transposed = Table.Transpose(Demoted), Res…
ทีแรก Demote เพื่อให้ Header (Name, Age) กลายเป็นข้อมูลแถวแรก แล้วค่อย Transpose จะได้เก็บข้อมูลชื่อเดิมไว้ในผลลัพธ์
Power Query Formula:

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

Result:

ตารางที่มี Header: Fred, Alice
- แถวที่ 1: [Fred = "Name", Alice = "Name"]
- แถวที่ 2: [Fred = 30, Alice = 28]

ตัวอย่างที่ 4: เมนเชน Key-Value Pairs (ใช้ชีวิตจริง)
let Attributes = Table.FromRecords({ [Attribute = "Product", January = "Laptop", February = "Laptop", March = "Tablet"], [Attribute = "Price", January = 50000,…
ตัวอย่างนี้คล้ายการแปลง Pivot Table ที่มา Rotated (ต้อง Unpivot) ข้อมูลกลับเป็นรูปแบบยาวเพื่อให้ Power BI อ่านถูก ทดแทนที่ต้องใช้ Unpivot Column ด้วย
Power Query Formula:

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

Result:

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

FAQs

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

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

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

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

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

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

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

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

Resources & Related

Additional Notes

Table.Transpose (table, optional columns) ใช้สำหรับสลับแกนตาราง โดยแถวกลายเป็นคอลัมน์ และคอลัมน์กลายเป็นแถว เหมือน Copy > Paste Special > Transpose ใน Excel นั่นแหละ

ที่เจ๋งคือ Transpose มีประโยชน์มากเวลาข้อมูลมาผิดโครงสร้าง เช่นชื่อข้อมูลอยู่คอลัมน์แรก แต่มันควรจะเป็นแถว หรือค่า Key-Value ที่ต้องการแสดงตามคอลัมน์แทนแถว ก็ Transpose เลย แล้วปรับ Header ด้วย PromoteHeaders ตามมา จบเรื่องนั้น!

ส่วนตัวผม Transpose นี่ใช้น้อยมากในโปรเจคจริง แต่มันมีความสุข (joy of BI) ที่เมื่อเจอข้อมูลผิดรูป แล้ว Transpose ได้อย่างแม่นยำ พอขาดแบบนี้นะ จำได้ไหมตอนมี Excel ต้องใช้เมาส์โยนแถวปะคอลัมน์ 555 😎

Leave a Reply

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