---
title: Table.FromRows – สร้างตารางจากรายการแถว
url: https://www.thepexcel.com/functions/power-query/table-functions/table-fromrows/
type: function-explainer
program: Power Query
syntax: "Table.FromRows(rows as list, optional columns as any) as table"
date: 2025-12-03
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 4
  usefulness: 6
---

# Table.FromRows – สร้างตารางจากรายการแถว

> Table.FromRows สร้างตารางจาก List ของ List โดยแต่ละ List ย่อยแทนข้อมูลในแถวหนึ่ง คล้ายกับการ transpo

## คำอธิบาย

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

## Syntax

```excel
Table.FromRows(rows as list, optional columns as any) as table
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| rows | Yes | List of Lists |  | รายการแถวข้อมูล โดยแต่ละแถวเป็น List ของค่าต่างๆ เช่น {{1, "A"}, {2, "B"}} หรือ {{1, "Alice", true}, {2, "Bob", false}} |
| columns | No | List of Text, Table Type, หรือ Number | null - ตั้งชื่ออัตโนมัติเป็น Column1, Column2, ... ตามลำดับ | สามารถเป็น List ของชื่อคอลัมน์ (เช่น {"ID", "Name", "Sales"}) หรือ Table Type ที่ระบุชื่อและชนิดข้อมูล (เช่น type table [ID = number, Name = text]) หรือตัวเลขแทนจำนวนคอลัมน์ |

## ตัวอย่าง

### 1. สร้างตารางพื้นฐานพร้อมชื่อคอลัมน์

```excel
let
    Rows = {
        {1, "Bob", 100},
        {2, "Jim", 200},
        {3, "Alice", 150}
    },
    Result = Table.FromRows(Rows, {"ID", "Name", "Sales"})
in
    Result
```

**ผลลัพธ์:** `ตารางมี 3 แถว 3 คอลัมน์ (ID, Name, Sales) โดยแต่ละแถวแสดงข้อมูลพนักงานและยอดขาย`

Table.FromRows แปลง nested list {{1, "Bob", 100}, ...} เป็นตารางพร้อมกำหนดชื่อคอลัมน์ที่มีความหมาย ทำให้อ่านแล้วเข้าใจได้ทันที

### 2. ไม่ระบุชื่อคอลัมน์ (Auto-naming)

```excel
let
    Rows = {
        {"Apple", 5},
        {"Banana", 3},
        {"Orange", 8}
    },
    Result = Table.FromRows(Rows)
in
    Result
```

**ผลลัพธ์:** `ตารางมี 3 แถว 2 คอลัมน์ โดยคอลัมน์ชื่อ Column1 และ Column2 ตามลำดับ`

ถ้าไม่ระบุชื่อคอลัมน์ Power Query จะตั้งชื่ออัตโนมัติเป็น Column1, Column2, ... สะดวกสำหรับข้อมูลชั่วคราว แต่ควรกำหนดชื่อที่มีความหมายเสมอถ้าสามารถทำได้

### 3. ระบุชนิดข้อมูล (Type Definition)

```excel
let
    Rows = {
        {1, "Alice", true},
        {2, "Bob", false},
        {3, "Charlie", true}
    },
    ColumnType = type table [UserID = number, Name = text, IsActive = logical],
    Result = Table.FromRows(Rows, ColumnType)
in
    Result
```

**ผลลัพธ์:** `ตารางมี 3 แถว 3 คอลัมน์ โดยแต่ละคอลัมน์มีชนิดข้อมูลที่กำหนดไว้อย่างชัดเจน (number, text, logical)`

ใช้ type table เพื่อระบุชื่อคอลัมน์พร้อมชนิดข้อมูล ทำให้ Power Query ตรวจสอบและจัดการชนิดข้อมูลได้อย่างแม่นยำตั้งแต่ต้น โดยไม่ต้องกังวลเรื่อง Type Error ภายหลัง

### 4. สร้างตารางจากข้อมูล JSON (API Response)

```excel
let
    JsonData = Json.Document(
        "{\"data\": [[1, \"John\", 2500], [2, \"Jane\", 3000]]}"
    ),
    DataList = JsonData[data],
    Result = Table.FromRows(
        DataList, 
        {"EmployeeID", "Name", "Salary"}
    )
in
    Result
```

**ผลลัพธ์:** `ตารางมี 2 แถว 3 คอลัมน์ โดยข้อมูลมาจาก JSON structure และได้ชื่อคอลัมน์ที่เหมาะสม`

นี่คือสถานการณ์ที่พบบ่อยมาก เมื่อดึงข้อมูลจาก API ที่ return JSON ใน nested array format สามารถใช้ Table.FromRows เพื่อแปลงเป็นตารางสำเร็จรูปได้เลย

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

- ผมแนะนำให้ระบุ Type parameter เสมอหากสามารถทำได้ เพราะจะช่วยให้ Power Query ตรวจสอบและจัดการชนิดข้อมูลได้ถูกต้อง และเกิด error น้อยลง

- ถ้าข้อมูลมาเป็น List of Columns (คอลัมน์เป็น List) แล้วต้องการให้เป็น List of Rows ให้ใช้ List.Transpose ก่อน แล้วส่งให้ Table.FromRows

- ใช้ร่วมกับ List.Transform เพื่อแปลงข้อมูลจาก API ให้อยู่ในรูป nested list ตามรูปแบบที่ต้องการ ก่อนส่งไป Table.FromRows

- ถ้าต้องการเพิ่มคอลัมน์ใหม่หลังจากสร้างตารางแล้ว ใช้ Table.AddColumn ต่อเนื่องมา อย่าพยายามเพิ่มลงใน rows parameter

- ส่วนตัวผม มักจะเขียน nested list ตัวอย่างใน Power Query Editor ก่อน เพื่อให้เห็นภาพชัดว่าข้อมูลมีรูปแบบอย่างไร แล้วค่อยเชื่อมต่อกับแหล่งข้อมูลจริง

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

**Q: Table.FromRows กับ Table.FromRecords ต่างกันอย่างไร?**

ปัญหานี้เจอบ่อยมากครับ 😅 Table.FromRecords ต้องการข้อมูลเป็น List ของ Record เช่น {[ID=1, Name="Bob"], [ID=2, Name="Jim"]} ส่วน Table.FromRows ต้องการเป็น List ของ List เช่น {{1, "Bob"}, {2, "Jim"}} ถ้าคุณมี nested list แต่ต้องการ Record ให้ใช้ Table.FromRecords แทน แต่ถ้าข้อมูลมาเป็น List of Lists ให้ใช้ Table.FromRows โดยตรง ผมแนะนำให้ตรวจเช็คโครงสร้างข้อมูลต้นฉบับก่อน เพื่อเลือกใช้ฟังก์ชันที่เหมาะสม

**Q: ต้องระบุชื่อคอลัมน์เสมอหรือ?**

ไม่จำเป็นครับ หากไม่ระบุ Power Query จะตั้งชื่ออัตโนมัติเป็น Column1, Column2, ... แต่ผมแนะนำให้ระบุเสมอถ้าเป็นไปได้ เพราะชื่อที่มีความหมายจะช่วยให้เข้าใจข้อมูลได้ง่ายขึ้น และเมื่อต้องอ้างอิงคอลัมน์ในขั้นตอนถัดไป ชื่อที่ชัดเจนจะลดความสับสน

**Q: จะทำไงถ้าข้อมูลมาจาก API เป็น nested array แต่ไม่รู้โครงสร้องล่วงหน้า?**

คำถามเจ๋งครับ! ถ้าโครงสร้าง JSON ไม่แน่นอน คุณสามารถสร้าง function ที่ตรวจสอบและปรับขนาด columns parameter แบบไดนามิก โดยใช้ List.Transform และ List.Range เพื่อกำหนดจำนวนคอลัมน์จากแถวแรก อีกวิธีหนึ่งคือปล่อยให้ Power Query ตั้งชื่ออัตโนมัติก่อน แล้วใช้ Table.RenameColumns หลังจากนั้น

**Q: Table.FromRows ใช้ได้กับข้อมูลขนาดใหญ่หรือ?**

ใช้ได้ครับ แต่ประสิทธิภาพขึ้นอยู่กับขนาดข้อมูล ผมแนะนำให้ตรวจสอบกับข้อมูลจริง บางครั้งถ้าข้อมูลมีขนาดใหญ่มาก อาจต้องใช้การ stream หรือ batch processing แทน แต่สำหรับข้อมูลทั่วไป (นับแสน record) Table.FromRows ก็ใช้ได้ปกติดีครับ

## ฟังก์ชันที่เกี่ยวข้อง

- [Table.FromRecords – สร้างตารางจากรายการ Record](https://www.thepexcel.com/functions/power-query/table-functions/table-fromrecords/)
- [Table.FromColumns – สร้างตารางจากลิสต์ของคอลัมน์](https://www.thepexcel.com/functions/power-query/table-functions/table-fromcolumns/)

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

- [Microsoft Learn - Official Documentation](https://learn.microsoft.com/en-us/powerquery-m/table-fromrows) _(official)_
- [PowerQuery.how - Examples and Explanations](https://powerquery.how/table-fromrows/) _(article)_
- [Microsoft Docs - Table Functions Reference](https://learn.microsoft.com/en-us/powerquery-m/table-functions) _(official)_

---

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