Thep Excel

Table.FromColumnsสร้างตารางจากลิสต์ของคอลัมน์

Table.FromColumns สร้างตารางจากลิสต์ของลิสต์ โดยแต่ละลิสต์จะเป็นคอลัมน์หนึ่ง เหมาะกับข้อมูล column-oriented จาก API หรือ JSON

fx
=Table.FromColumns(lists, [columns]) as table

ความนิยม6/10
ความยาก4/10
ประโยชน์7/10

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
lists list ลิสต์ที่บรรจุลิสต์ของค่าแต่ละคอลัมน์ เช่น {{1, 2, 3}, {“A”, “B”, “C”}}
[columns]ไม่บังคับ any null ชื่อคอลัมน์ (ลิสต์ของ Text) หรือ Table Type – ถ้าไม่ระบุจะเป็น Column1, Column2, … เป็นต้น

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

Table.FromColumns ใช้สร้างตารางจากข้อมูลที่จัดเก็บเป็นคอลัมน์แยกกัน แทนแถว ฟังก์ชันนี้คาดหวัง {{Col1}, {Col2}, {Col3}} ก็จะสร้างตารางแนวนอนให้เองครับ

ที่เจ๋งคือถ้า List แต่ละอันมีจำนวนข้อมูลไม่เท่ากัน Power Query จะเติม null ให้อัตโนมัติแทนที่จะพังเลย ก็ไม่ต้องกังวลเรื่องข้อมูลที่ไม่เรียบร้อย

ส่วนตัวผมใช้ฟังก์ชันนี้บ่อยครั้งตอนดึงข้อมูลจาก API ที่ return เป็น {“ids”: [1,2,3], “names”: [“Bob”, “Jim”]} อย่างนี้ ก็นำ List ทั้งสองมา feed ให้ Table.FromColumns เสร็จสรรค์ใจแล้ว 😎

Examples

สร้างตารางจากลิสต์ 2 คอลัมน์พร้อมชื่อlet IDList = {1, 2, 3}, NameList = {"Bob", "Jim", "Paul"}, Result = Table.FromColumns({IDList, NameList}, {"ID", "Name"}) in Result

นำลิสต์ ID และ Name มาสร้างเป็นตาราง โดยระบุชื่อคอลัมน์เป็น ID และ Name

fx
let
IDList = {1, 2, 3},
NameList = {"Bob", "Jim", "Paul"},
Result = Table.FromColumns({IDList, NameList}, {"ID", "Name"})
in
Result

ผลลัพธ์ตาราง 3 แถว 2 คอลัมน์: ID (1,2,3) และ Name (Bob, Jim, Paul)
ข้อมูลแต่ละคอลัมน์มีจำนวนไม่เท่ากันlet Col1 = {1, 2}, Col2 = {"A", "B", "C"}, Result = Table.FromColumns({Col1, Col2}, {"Numbers", "Letters"}) in Result

Col1 มี 2 ค่า Col2 มี 3 ค่า – Power Query จะเติม null ให้ในแถวที่ 3 ของ Numbers โดยอัตโนมัติ

fx
let
Col1 = {1, 2},
Col2 = {"A", "B", "C"},
Result = Table.FromColumns({Col1, Col2}, {"Numbers", "Letters"})
in
Result

ผลลัพธ์ตาราง 3 แถว: แถว 1-2 มีค่า แถว 3 มี null ในคอลัมน์ Numbers
ไม่ระบุชื่อคอลัมน์ (Auto-naming)let Data1 = {100, 200, 300}, Data2 = {50, 75, 25}, Data3 = {"X", "Y", "Z"}, Result = Table.FromColumns({Data1, Data2, Data3}) in Result

ไม่ระบุ parameter ที่ 2 ก็ Power Query จะตั้งชื่อคอลัมน์เองตามลำดับ

fx
let
Data1 = {100, 200, 300},
Data2 = {50, 75, 25},
Data3 = {"X", "Y", "Z"},
Result = Table.FromColumns({Data1, Data2, Data3})
in
Result

ผลลัพธ์ตาราง 3 แถว 3 คอลัมน์ ชื่อคอลัมน์เป็น Column1, Column2, Column3 (อัตโนมัติ)
ลิสต์ว่าง (Empty List)let Empty1 = {}, Empty2 = {}, Result = Table.FromColumns({Empty1, Empty2}, {"A", "B"}) in Result

ถ้าลิสต์ว่างหมด ก็จะได้ตารางว่าง (0 แถว) แต่ยังคงมีชื่อคอลัมน์ 2 คอลัมน์

fx
let
Empty1 = {},
Empty2 = {},
Result = Table.FromColumns({Empty1, Empty2}, {"A", "B"})
in
Result

ผลลัพธ์ตาราง 0 แถว 2 คอลัมน์

FAQs

ต่างจาก Table.FromRows ยังไง?+

Table.FromRows คาดหวัง {{Row1}, {Row2}, …} ข้อมูลเป็นแถวๆ ส่วน Table.FromColumns คาดหวัง {{Col1}, {Col2}, …} ข้อมูลเป็นคอลัมน์ๆ – ตรงข้ามกันเลยครับ

เวลา List ความยาวไม่เท่า จะบอกว่าไหนคือแถวที่สุดหรือเปล่า?+

ไม่บอก Power Query ก็เติม null ให้เอง ใช้ List.Max(List.Transform({Col1, Col2, Col3}, List.Count)) ถ้าอยากรู้ว่าจะมีกี่แถว

ถ้าลิสต์ว่างหมดจะเป็นไง?+

ก็จะได้ตารางว่าง (0 แถว) แต่คอลัมน์จะยังอยู่ถ้าระบุชื่อคอลัมน์ไว้

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.FromColumns จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้Table.FromColumnsTable functions
Table functions (3)
Table.FromRecords

แปลง List ของ Record เป็นตาราง โดยแต่ละ Record กลายเป็นหนึ่งแถว เหมาะสำหรับข้อมูลจาก API หรือ JSON

Table.FromRows

Table.FromRows สร้างตารางจาก List ของ List โดยแต่ละ List ย่อยแทนข้อมูลในแถวหนึ่ง คล้ายกับการ transpose ข้อมูลแบบแถว-คอลัมน์ แต่ทำให้เป็นตารางจริงในทันที

Table.ToColumns

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

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่