Thep Excel

Table.ToColumns – แปลงตารางเป็น List ของ List (รายคอลัมน์)

Table.ToColumns แปลงตาราง (Table) ให้เป็น List ของ List โดยแต่ละ List ย่อยแทนข้อมูลจากคอลัมน์เดียว เรียงตามลำดับคอลัมน์จากซ้ายไปขวา ส่วนกลับกันของ Table.FromColumns

= Table.ToColumns(table as table) as list

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
5/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

= Table.ToColumns(table as table) as list

Argument Type Required Default Description
table table Yes ตารางที่ต้องการแปลงให้เป็น List ของ List

How it works

ประมวลผลข้อมูลรายคอลัมน์

ใช้ร่วมกับ List.Transform เพื่อแปลงค่าในแต่ละคอลัมน์ทีละคอลัมน์

ใช้กับ List.Zip

ใช้เตรียมข้อมูลสำหรับ List.Zip เพื่อรวมคอลัมน์ต่างๆ เข้าด้วยกัน

Examples

ตัวอย่างที่ 1: แปลงตารางพื้นฐาน
let SampleTable = Table.FromRecords({ [CustomerID = 1, Name = "Bob", Amount = 100], [CustomerID = 2, Name = "Jim", Amount = 200] }), Result = Table.ToColumns(Sa…
ตาราง 2 แถว 3 คอลัมน์ ถูกแปลงเป็น List ของ 3 Lists ย่อย คอลัมน์ที่ 1 คือ {1, 2}, คอลัมน์ที่ 2 คือ {"Bob", "Jim"}, คอลัมน์ที่ 3 คือ {100, 200}
Power Query Formula:

let
    SampleTable = Table.FromRecords({
        [CustomerID = 1, Name = "Bob", Amount = 100],
        [CustomerID = 2, Name = "Jim", Amount = 200]
    }),
    Result = Table.ToColumns(SampleTable)
in
    Result

Result:

{{1, 2}, {"Bob", "Jim"}, {100, 200}}

ตัวอย่างที่ 2: ใช้กับตาราง Source และเข้าถึง List แต่ละตัว
let Source = Table.FromRows( {{"Alice", 1500}, {"Bob", 2000}, {"Charlie", 1800}}, {"Employee", "Salary"} ), ColumnsList = Table.ToColumns(Source), FirstColumn =…
แปลง Source ทั้งหมดเป็น List ของ Lists จากนั้นสามารถเข้าถึง List แต่ละรายการด้วย index {0}, {1} เป็นต้น เหมือนกับการใช้ array indexing
Power Query Formula:

let
    Source = Table.FromRows(
        {{"Alice", 1500}, {"Bob", 2000}, {"Charlie", 1800}},
        {"Employee", "Salary"}
    ),
    ColumnsList = Table.ToColumns(Source),
    FirstColumn = ColumnsList{0},
    SecondColumn = ColumnsList{1}
in
    ColumnsList

Result:

{{"Alice", "Bob", "Charlie"}, {1500, 2000, 1800}}

ตัวอย่างที่ 3: ประมวลผลเฉพาะคอลัมน์ด้วย List.Transform
let Source = Table.FromRecords({ [ID = 1, Value = 10], [ID = 2, Value = 20], [ID = 3, Value = 30] }), ColumnsList = Table.ToColumns(Source), SecondColumnDoubled…
ดึงคอลัมน์ที่ 2 จาก List ของ Lists แล้วคูณแต่ละค่าด้วย 2 โดยใช้ List.Transform กับ each keyword เพื่อสร้าง dynamic transformation
Power Query Formula:

let
    Source = Table.FromRecords({
        [ID = 1, Value = 10],
        [ID = 2, Value = 20],
        [ID = 3, Value = 30]
    }),
    ColumnsList = Table.ToColumns(Source),
    SecondColumnDoubled = List.Transform(ColumnsList{1}, each _ * 2),
    Result = {ColumnsList{0}, SecondColumnDoubled}
in
    Result

Result:

{{1, 2, 3}, {20, 40, 60}}

ตัวอย่างที่ 4: นับจำนวนคอลัมน์และแถว
let Source = Table.FromRecords({ [A = 1, B = 2, C = 3], [A = 4, B = 5, C = 6], [A = 7, B = 8, C = 9] }), ColumnsList = Table.ToColumns(Source), ColumnCount = Li…
นับจำนวนคอลัมน์ด้วย List.Count ของผลลัพธ์ทั้งหมด (3 Lists = 3 คอลัมน์) และนับจำนวนแถวด้วย List.Count ของคอลัมน์แรก (3 ค่า = 3 แถว)
Power Query Formula:

let
    Source = Table.FromRecords({
        [A = 1, B = 2, C = 3],
        [A = 4, B = 5, C = 6],
        [A = 7, B = 8, C = 9]
    }),
    ColumnsList = Table.ToColumns(Source),
    ColumnCount = List.Count(ColumnsList),
    RowCount = List.Count(ColumnsList{0})
in
    {ColumnCount, RowCount}

Result:

{3, 3}

FAQs

Table.ToColumns ต่างจาก Table.ToRows อย่างไร?

Table.ToColumns แปลงข้อมูลรายคอลัมน์ (ผลลัพธ์เป็น List ของคอลัมน์) ส่วน Table.ToRows แปลงข้อมูลรายแถว (ผลลัพธ์เป็น List ของแถว) ถ้าตาราง 3 แถว 2 คอลัมน์ ToColumns ให้ {2 Lists ของแถวละ 3 ค่า} แต่ ToRows ให้ {3 Lists ของแถวละ 2 ค่า}

สามารถแปลงกลับเป็นตารางได้ไหม?

ได้ครับ ใช้ Table.FromColumns เพื่อแปลง List ของ List กลับไปเป็นตาราง ผมมักจะใช้ workflow นี้เวลาต้องประมวลผลข้อมูลแบบ column-by-column แล้วแปลงกลับเป็นตารางเหมือนเดิม

ถ้าตารางว่าง (0 แถว) จะเกิดอะไร?

ยังคงได้ List ของ Lists ที่ว่างเปล่า ตัวอย่าง: Table.ToColumns(Table.FromRecords({})) → {} ไม่มี List ย่อยเลยครับ เพราะไม่มีคอลัมน์ที่จะแปลง

ใช้ Table.ToColumns แบบไหนถึง optimize ได้?

ปัญหาคือถ้าตารางใหญ่มากๆ การแปลงเป็น List จะใช้ memory เยอะ ผมแนะนำให้กรอง (filter) ก่อนแปลง หรือใช้ List functions แบบ lazy evaluation ถ้าเป็นไปได้

Resources & Related

Additional Notes

ฟังก์ชัน Table.ToColumns ใช้สำหรับแปลงตารางให้เป็น List ของ List โดยคอลัมน์แต่ละคอลัมน์จะกลายเป็น List ย่อยหนึ่งตัว บ่อยครั้งใช้เมื่อต้องการประมวลผลข้อมูลแบบรายคอลัมน์ หรือต้องการเปลี่ยนโครงสร้างข้อมูลให้เป็นรูปแบบ List เพื่อใช้กับฟังก์ชัน List อื่นๆ

ที่เจ๋งคือ Table.ToColumns เป็นการผกผันของ Table.FromColumns ถ้าคุณแปลงตาราง → List ของ List แล้วแปลงกลับ ก็ได้ตารางเดิมคืนมา ซึ่งมีประโยชน์มากในการจัดการข้อมูลที่ต้องเปลี่ยนรูปแบบไปมา

ส่วนตัวผมชอบใช้ Table.ToColumns เวลาต้องทำ dynamic formula บน List ของคอลัมน์ หรือต้องดึง metadata เกี่ยวกับคอลัมน์ต่างๆ มันให้ความยืดหยุ่นมากขึ้น

Leave a Reply

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