Thep Excel

Table.ToRowsแปลงตารางเป็น List ของ List (รายแถว)

Table.ToRows แปลงตารางให้เป็น List ของ List โดยแต่ละ List ย่อยแทนข้อมูล 1 แถว ไม่มีชื่อคอลัมน์ เหมาะสำหรับส่งออกข้อมูลเป็น JSON/CSV หรือประมวลผลแถวโดยไม่สนใจชื่อฟิลด์

fx
=Table.ToRows(table) as list

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
table table ตารางที่ต้องการแปลงให้เป็น List ของ List

Additional Notes

Table.ToRows ฟังก์ชันแปลงตารางให้เป็น List โดยที่สมาชิกแต่ละตัวใน List ใหญ่ คือ List ย่อยที่มีค่าจาก 1 แถวในตาราง เรียงตามลำดับคอลัมน์ และสำคัญคือ ไม่มีชื่อคอลัมน์มาด้วย เหมาะสำหรับสถานการณ์ที่ต้องแปลงตารางเป็น CSV หรือ JSON arrays หรือประมวลผลข้อมูลทีละแถวโดยไม่จำเป็นต้องรู้ชื่อคอลัมน์

ที่เจ๋งคือ ถ้าคุณเพียงแค่ต้องการค่าข้อมูล ไม่ต้องการ Field Names ก็ใช้ Table.ToRows ดีกว่า Table.ToRecords เนื่องจาก structure จะเรียบง่ายกว่า

ส่วนตัวผมชอบใช้ Table.ToRows เวลาต้องส่งข้อมูล API ที่ต้องการ array-of-arrays format หรือตอนแปลง Power Query ไป JSON ให้เป็นตัวเลขเท่านั้น ก็ใช้ได้เก่ง ไม่ต้องเพิ่ม Field Names ที่ไม่จำเป็น

How it works

สร้างไฟล์ CSV จากตาราง

ใช้ Text.Combine ร่วมกับ Table.ToRows เพื่อแปลงข้อมูลในตารางให้เป็นรูปแบบ CSV

ประมวลผลข้อมูลทีละแถวโดยไม่สนใจชื่อคอลัมน์

เหมาะสำหรับกรณีที่ต้องการประมวลผลข้อมูลแบบ Element-by-Element หรือเมื่อชื่อคอลัมน์ไม่สำคัญ

Examples

ตัวอย่างพื้นฐาน: แปลงตารางง่ายๆlet SampleTable = Table.FromRecords( { [ID = 1, Name = "Bob", Phone = "123-4567"], [ID = 2, Name = "Jim", Phone = "987-6543"], [ID = 3, Name = "Paul", Phone = "…

ตาราง 3 แถว 3 คอลัมน์ ถูกแปลงเป็น List ของ 3 Lists ย่อย แต่ละ List ย่อยประกอบด้วยค่าจากแถวนั้นเท่านั้น ไม่มี Field Names

fx
let
SampleTable = Table.FromRecords(
{
[ID = 1, Name = "Bob", Phone = "123-4567"],
[ID = 2, Name = "Jim", Phone = "987-6543"],
[ID = 3, Name = "Paul", Phone = "543-7890"]
}
),
Result = Table.ToRows(SampleTable)
in
Result

ผลลัพธ์{{1, "Bob", "123-4567"}, {2, "Jim", "987-6543"}, {3, "Paul", "543-7890"}}
ตัวอย่างจริง: ส่งออก CSVlet Source = Table.FromRecords( { [OrderID = "001", Amount = 1500], [OrderID = "002", Amount = 2300], [OrderID = "003", Amount = 800] } ), AsRows = Table.ToRows…

แปลงตารางเป็น List of Lists แล้วจึง combine ข้อมูลให้เป็น CSV format ที่มี comma delimiter และ line feed

fx
let
Source = Table.FromRecords(
{
[OrderID = "001", Amount = 1500],
[OrderID = "002", Amount = 2300],
[OrderID = "003", Amount = 800]
}
),
AsRows = Table.ToRows(Source),
CsvFormat = Text.Combine(
List.Transform(
AsRows,
each Text.Combine(List.Transform(_, Text.From), ",")
),
"#(lf)"
)
in
CsvFormat

ผลลัพธ์"001,1500\n002,2300\n003,800"
เปรียบเทียบ Table.ToRows vs Table.ToRecordslet Data = Table.FromRecords({[ID = 1, Status = "Active"]}), Rows = Table.ToRows(Data), Records = Table.ToRecords(Data) in {Rows, Records}

Table.ToRows ⟶ {{1, "Active"}} (List ของ List) | Table.ToRecords ⟶ {[ID = 1, Status = "Active"]} (List ของ Record ที่มี Field Names)

fx
let
Data = Table.FromRecords({[ID = 1, Status = "Active"]}),
Rows = Table.ToRows(Data),
Records = Table.ToRecords(Data)
in
{Rows, Records}

ผลลัพธ์{{1, "Active"}, {[ID = 1, Status = "Active"]}}

FAQs

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

Table.ToRows คืน List ของ List (เช่น {{1, 2}, {3, 4}}) โดยไม่มีชื่อคอลัมน์ ส่วน Table.ToRecords คืน List ของ Record (เช่น {[A=1, B=2], [A=3, B=4]}) ที่มี Field Names หากคุณต้องการชื่อคอลัมน์เพื่อการประมวลผลต่อไป ให้ใช้ Table.ToRecords แต่ถ้าแค่ต้องการค่าข้อมูลแบบง่ายๆ ให้ใช้ Table.ToRows

ใช้ Table.ToRows ตอนไหน?+

ใช้เวลาต้องการ: (1) ส่งออกเป็น CSV/JSON array format, (2) ประมวลผลแถวโดยไม่จำเป็นต้องรู้ชื่อคอลัมน์, (3) ส่งข้อมูลไปยัง API ที่ต้องการ array-of-arrays, (4) สร้าง List แบบง่ายๆ เพื่อใช้งานต่อไป

ค่าจากแถวจะเรียงตามลำดับไหน?+

ค่าจะเรียงตามลำดับของคอลัมน์ในตารางจากซ้ายไปขวา เช่น ถ้าตารางมี คอลัมน์ A, B, C ลำดับจะเป็น {valueA, valueB, valueC}

ถ้าตารางไม่มีแถวเลยจะเกิดอะไร?+

จะคืน List ว่าง {} (empty list) ไม่ใช่ error

Resources & Related

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

ฟังก์ชันนี้Table.ToRowsTable functions
List functions (2)
List.Transform

List.Transform ใช้สำหรับสร้างลิสต์ใหม่โดยนำฟังก์ชันไปประมวลผลแต่ละตัวในลิสต์เดิม

List.Zip

List.Zip จะรับ List ของ List (เช่น {{List1}, {List2}}) เป็น Input แล้วรวมสมาชิกที่อยู่ในตำแหน่ง Index เดียวกันของแต่ละ List ย่อย มารวมกันเป็น List ย่อยชุดใหม่ใน Output List

Table functions (2)
Table.ToColumns

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

Table.ToRecords

Table.ToRecords แปลงตารางให้เป็น List โดยแต่ละแถวกลายเป็น Record พร้อมชื่อคอลัมน์เป็น Field Name ทำให้สะดวกในการวนลูปแบบมีโครงสร้าง

Text functions (1)
Text.Combine

Text.Combine ใช้สำหรับรวมข้อความหลายตัวจาก List เข้าด้วยกันเป็นข้อความเดียว โดยสามารถเลือกใช้ตัวคั่น (separator) เช่น ลูกน้ำ เครื่องหมายขีด หรือ space ได้ เหมาะสำหรับสร้างชื่อเต็ม ที่อยู่ หรือรหัสประจำตัวจากส่วนประกอบย่อยๆ

Comments

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