---
title: PIVOTBY – สร้าง Pivot Table ด้วยสูตร Dynamic Array
url: https://www.thepexcel.com/functions/excel/statistical/pivotby/
type: function-explainer
program: Excel
syntax: "=PIVOTBY(row_fields, col_fields, values, function, [field_headers], [row_total_depth], [row_sort_order], [col_total_depth], [col_sort_order], [filter_array])"
date: 2025-11-30
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 4
  usefulness: 6
---

# PIVOTBY – สร้าง Pivot Table ด้วยสูตร Dynamic Array

> PIVOTBY เป็นฟังก์ชัน Excel 365 ที่สร้าง Pivot Table แบบไดนามิก โดยกำหนด Row Fields, Column Fields แล

## คำอธิบาย

PIVOTBY เป็นฟังก์ชัน Excel 365 ที่สร้าง Pivot Table แบบไดนามิก โดยกำหนด Row Fields, Column Fields และ Values ผ่านสูตร พร้อมตั้งค่าการแสดงผลรวมและการเรียงลำดับได้ทันที

## Syntax

```excel
=PIVOTBY(row_fields, col_fields, values, function, [field_headers], [row_total_depth], [row_sort_order], [col_total_depth], [col_sort_order], [filter_array])
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| row_fields | Yes | Range |  | คอลัมน์ที่ต้องการนำมาเป็นแถว (Row Labels) - แต่ละค่าที่แตกต่างกันจะแสดงเป็นแถวหนึ่ง |
| col_fields | Yes | Range |  | คอลัมน์ที่ต้องการนำมาเป็นหัวคอลัมน์ (Column Labels) - แต่ละค่าที่แตกต่างกันจะแสดงเป็นคอลัมน์หนึ่ง |
| values | Yes | Range |  | ข้อมูลตัวเลขที่ต้องการนำมาคำนวณ (Values to aggregate) - ต้องเป็นตัวเลขเสมอ |
| function | Yes | Function or Array |  | ฟังก์ชันสรุปผล เช่น SUM, AVERAGE, COUNT, MAX, MIN, PRODUCT หรือ HSTACK เพื่อใช้หลายฟังก์ชัน |
| field_headers | No | Logical |  | TRUE เพื่อแสดงชื่อคอลัมน์ตัวแรก FALSE เพื่อซ่อน (ค่าเริ่มต้น: FALSE) |
| row_total_depth | No | Number |  | ความลึกของการแสดง Row Totals: 0=ไม่แสดง -1=ทั้งหมด 1,2,3=ระดับนั้นๆ (ค่าเริ่มต้น: -1) |
| row_sort_order | No | Number |  | ลำดับการเรียง Row: 1=เรียงเหมือน source data -1=เรียงตัวเลขจากมากไปน้อย 2=เรียง A-Z (ค่าเริ่มต้น: 1) |
| col_total_depth | No | Number |  | ความลึกของการแสดง Column Totals: 0=ไม่แสดง -1=ทั้งหมด 1,2,3=ระดับนั้นๆ (ค่าเริ่มต้น: -1) |
| col_sort_order | No | Number |  | ลำดับการเรียง Column: 1=เรียงเหมือน source data -1=เรียงตัวเลขจากมากไปน้อย 2=เรียง A-Z (ค่าเริ่มต้น: 1) |
| filter_array | No | Array |  | อาเรย์เพื่อกรองข้อมูล เช่นมาจาก FILTER function (ค่าเริ่มต้น: ใช้ทั้งหมด) |

## เคสการใช้งาน

### สรุปยอดขายรายภาคและสินค้า

ดูยอดขายแยกตามภาค (Rows) และประเภทสินค้า (Columns) ในตารางเดียว

### รายงานสรุปรายเดือนและรายปี

เปรียบเทียบข้อมูลรายเดือน (Rows) ของแต่ละปี (Columns)

### วิเคราะห์คะแนนสอบ

ดูคะแนนเฉลี่ยของนักเรียนแยกตามห้อง (Rows) และวิชา (Columns)

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: Pivot Table พื้นฐาน - สรุปยอดขายรายภาคและสินค้า

```excel
=PIVOTBY(A2:A20, B2:B20, C2:C20, SUM)
```

**ผลลัพธ์:** `ตารางแสดงผลรวมยอดขายแยกตามภาค (แถว) และสินค้า (คอลัมน์)`

สร้าง Pivot Table ที่ A2:A20 เป็น Row Fields (Region) B2:B20 เป็น Col Fields (Product) C2:C20 เป็น Values ที่จะรวม (Sales Amount) ผลลัพธ์จะแสดงเมทริกซ์ 2 มิติของผลรวมยอดขาย

### 2. ตัวอย่างที่ 2: Pivot Table พร้อม Header, Grand Total และจัดเรียงตามยอดขายจากมากไปน้อย

```excel
=PIVOTBY(Sales[Region], Sales[Product], Sales[Amount], SUM, TRUE, -1, -1, -1, -1)
```

**ผลลัพธ์:** `ตารางพร้อม Header แสดง Grand Total และเรียง Row, Column ตามผลรวมจากมากไปน้อย`

ใช้ Excel Table reference (Sales[Region] ฯลฯ) TRUE แสดง field_headers -1 แสดงผลรวมทั้งหมด -1 (row_sort_order) เรียง Row จากผลรวมมากไปน้อย -1 (col_sort_order) เรียง Column เช่นเดียวกัน ผลลัพธ์เป็นรายงานเสร็จสิ้นพร้อมโครงสร้าง Pivot Table ที่มี Header และ Grand Total

### 3. ตัวอย่างที่ 3: Pivot Table แสดง 2 ค่า (ค่าเฉลี่ยและจำนวน) พร้อมกัน

```excel
=PIVOTBY(Scores[Room], Scores[Subject], Scores[Value], HSTACK(AVERAGE, COUNT))
```

**ผลลัพธ์:** `ตารางแสดงค่าเฉลี่ยและจำนวนนักเรียนในแต่ละช่อง`

ใช้ HSTACK รวมฟังก์ชัน AVERAGE (คำนวณค่าเฉลี่ยคะแนน) และ COUNT (นับจำนวนบันทึก) ผลลัพธ์แต่ละช่องจะมี 2 คอลัมน์แนบเรียง เช่น ห้อง A วิชา Math แสดง 85 (ค่าเฉลี่ย) และ 30 (จำนวน)

### 4. ตัวอย่างที่ 4: Pivot Table กรองข้อมูลเฉพาะเดือนที่ 1-6 โดย FILTER

```excel
=PIVOTBY(FILTER(Sales[Region], Sales[Month]<=6), FILTER(Sales[Product], Sales[Month]<=6), FILTER(Sales[Amount], Sales[Month]<=6), SUM)
```

**ผลลัพธ์:** `ตารางสรุปยอดขายเฉพาะเดือน 1-6 เท่านั้น`

ใช้ FILTER function ตัดแต่เฉพาะแถว (row) ที่เดือน

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

- ผมแนะนำให้ใช้ Table reference (เช่น Sales[Region]) แทน Hard range (เช่น A2:A100) เพราะตาราง Dynamic Array ของ PIVOTBY จะรับรู้การเพิ่มข้อมูลใหม่โดยอัตโนมัติ

- ถ้าต้องการแสดง 2-3 ฟังก์ชันพร้อมกัน ให้ใช้ HSTACK เช่น HSTACK(SUM, AVERAGE, COUNT) ผมใช้วิธีนี้ทำรายงานสรุปข้อมูลที่ครบถ้วนสุดๆ

- ตั้งใจ row_sort_order = -1 หรือ col_sort_order = -1 ให้ดี เพราะค่าเลขติดลบหมายถึง เรียงตามผลรวมจากมากไปน้อย ส่วนบวกแล้ว order ไม่ชัดเจน

- ผมชอบเลือก row_total_depth และ col_total_depth = 0 (ไม่แสดง Totals) เมื่อต้องการ Pivot Table ที่สะอาด แต่ถ้าต้องการดู Grand Total ให้ใช้ -1

- อย่าลืมว่า PIVOTBY ต้องใช้ Excel 365 เท่านั้น ถ้าใช้ Excel 2021 หรือก่อนหน้า จะไม่มีฟังก์ชันนี้ ผมแนะนำให้ใช้ Pivot Table เมนูแทน

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

**Q: PIVOTBY ต่างจาก Pivot Table เมนูธรรมชาติอย่างไร?**

ผม Pivot Table เมนูดีตรงที่มี Slicer, Filter, Drill Down ฯลฯ แต่ PIVOTBY มีข้อดีคือ Dynamic (อัปเดตอัตโนมัติ), สามารถใส่ในสูตร อื่นๆ ได้, ไม่ต้องสร้าง pivot field ใหม่ซ้ำแล้วซ้ำเล่า ผมชอบใช้ PIVOTBY เมื่อต้องการรายงานที่เปลี่ยนแปลงพร้อมกับแหล่งข้อมูล

**Q: PIVOTBY ต่างจาก GROUPBY อย่างไร?**

GROUPBY มีแค่ Row Fields (สรุปเป็นรายการลงมา) ส่วน PIVOTBY มีทั้ง Row และ Column Fields (สรุปเป็นตาราง 2 มิติ) ถ้าต้องการตาราง 2 มิติ ใช้ PIVOTBY ถ้าต้องการรายการแนวตั้ง ใช้ GROUPBY

**Q: PIVOTBY รองรับ Slicer ได้ไหม?**

ไม่โดยตรง เพราะ PIVOTBY ไม่ใช่ Pivot Table จริงๆ แต่ผมชอบแก้ไขนี้โดยเพิ่ม Dropdown list ที่อ้างอิงไปยังข้อมูลต้นทาง หรือใช้ FILTER ร่วมกับ PIVOTBY แล้วให้ Dropdown ควบคุมเงื่อนไขในสูตร เช่นเลือกเดือนหรือภูมิภาค

**Q: ใช้ PIVOTBY กับตาราง Structured Range ได้ไหม?**

ได้ครับ ผมใช้ Table reference เช่น Sales[Region], Sales[Product] ได้เลย แม้แต่ Table ที่มีการ update ข้อมูลใหม่ PIVOTBY จะรับรู้และอัปเดตผลลัพธ์โดยอัตโนมัติ

**Q: row_sort_order = -1 หมายความว่าอะไร?**

ผมอธิบายว่า row_sort_order = -1 หมายถึง เรียง Row ตามผลรวมมากไปน้อย ค่า 1 คือเรียงเหมือนลำดับต้นทาง 2 คือเรียง A-Z ไม่มี ascending/descending สำหรับ A-Z ปกติจะเป็น descending ถ้าต้อง ascending ต้องใช้ SORT ครอบบนนอก PIVOTBY

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

- [GROUPBY – สรุปข้อมูลแบบ Pivot Table ด้วยสูตร](https://www.thepexcel.com/functions/excel/statistical/groupby/)
- [HSTACK – ฟังก์ชันรวมข้อมูลแนวนอน](https://www.thepexcel.com/functions/excel/lookup-and-reference/hstack/)
- [SORT – ฟังก์ชันเรียงลำดับแบบสไปล์](https://www.thepexcel.com/functions/excel/lookup-and-reference/sort/)
- summarize
- [UNIQUE – ฟังก์ชันดึงค่าที่ไม่ซ้ำ](https://www.thepexcel.com/functions/excel/lookup-and-reference/unique/)

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

- [Microsoft Support: PIVOTBY function](https://support.microsoft.com/en-us/office/pivotby-function-e451fd96-c18d-4320-86e9-b8024c8f7072) _(official)_
- [ExcelJet - PIVOTBY Tutorial](https://exceljet.net/excel-functions/excel-pivotby-function) _(guide)_
- [Microsoft Learn: Dynamic Array Functions](https://learn.microsoft.com/en-us/excel/formula-reference/dynamic-arrays) _(official)_

---

_Source: [https://www.thepexcel.com/functions/excel/statistical/pivotby/](https://www.thepexcel.com/functions/excel/statistical/pivotby/)_
