---
title: CUBESET – สร้างชุดข้อมูลจากคิูบ
url: https://www.thepexcel.com/functions/excel/cube/cubeset/
type: function-explainer
program: Excel
syntax: "=CUBESET(connection, set_expression, [caption], [sort_order], [sort_by])"
date: 2025-12-11
updated: 2025-12-25
scores:
  popularity: 2
  difficulty: 7
  usefulness: 5
---

# CUBESET – สร้างชุดข้อมูลจากคิูบ

> CUBESET ส่งชุด MDX expression ไปยังเซิร์ฟเวอร์คิูบ แล้วส่งชุดข้อมูลกลับมาใช้กับฟังก์ชัน CUBE อื่นๆ เ

## คำอธิบาย

CUBESET ส่งชุด MDX expression ไปยังเซิร์ฟเวอร์คิูบ แล้วส่งชุดข้อมูลกลับมาใช้กับฟังก์ชัน CUBE อื่นๆ เหมาะสำหรับงานวิเคราะห์ข้อมูล OLAP

## Syntax

```excel
=CUBESET(connection, set_expression, [caption], [sort_order], [sort_by])
```

**Variant**

```excel
=CUBESET("Finance", "[Product].[Product].[All].Children")
```

ส่งกลับชุดของประเภทสินค้าทั้งหมด

**Variant**

```excel
=CUBESET("Sales", "[Product].[All Products].Children", "Products", 1, "[Measures].[Sales Amount]")
```

ส่งกลับชุดสินค้าเรียงลำดับจากน้อยไปมากตามยอดขาย

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| connection | Yes | text |  | ข้อความที่ระบุชื่อของการเชื่อมต่อกับคิูบ ต้องตรงกับชื่อการเชื่อมต่อที่ตั้งไว้ใน Excel |
| set_expression | Yes | text |  | ข้อความ MDX set expression หรืออ้างอิงเซลล์ที่มีสมาชิก tuples หรือชุด เช่น '[Product].[Product].Children' หรือ Order([Time].[Month].Members, [Measures].[Amount], DESC) |
| caption | No | text |  | ข้อความที่จะแสดงในเซลล์แทนชื่อชุด ถ้าไม่ระบุจะแสดงค่าโดยปริยาย |
| sort_order | No | number | 0 | ตัวเลข 0-6 ที่ระบุการเรียงลำดับ: 0=SortNone (ค่าปริยาย) 1=SortAscending 2=SortDescending 3=SortAlphaAscending 4=SortAlphaDescending 5=SortNaturalAscending 6=SortNaturalDescending |
| sort_by | No | text |  | ข้อความที่ระบุค่าที่ใช้สำหรับการเรียงลำดับ จำเป็นต้องใช้เมื่อ sort_order เป็น 1 หรือ 2 เช่น '[Measures].[Sales Amount]' หรือ '[Measures].[Quantity]' |

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

### สร้างชุดประเภทสินค้า

ใช้ CUBESET เพื่อสร้างชุดของประเภทสินค้าทั้งหมดจากคิูบ

_เหมาะกับ:_ set-creation

### เรียงลำดับสินค้าตามยอดขาย

ใช้ CUBESET กับ sort_order=1 และ sort_by='[Measures].[Sales Amount]' เพื่อสร้างชุดสินค้าเรียงลำดับจากยอดขายมากไปน้อย

_เหมาะกับ:_ ranked-sets

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: สร้างชุดประเภทสินค้า

```excel
=CUBESET("Finance", "[Product].[Product].[All].Children", "Products")
```

**ผลลัพธ์:** `ชุดของประเภทสินค้าทั้งหมดจากมิติ Product`

สูตรนี้ส่ง MDX expression '[Product].[Product].[All].Children' ไปยังเซิร์ฟเวอร์ เพื่อดึงลูก (children) ทั้งหมดจากระดับ All ของมิติ Product และแสดงข้อความ 'Products' ในเซลล์ แทนที่จะแสดงโค้ด MDX เบื้องต้น

### 2. ตัวอย่างที่ 2: เรียงสินค้าตามยอดขายจากน้อยไปมาก

```excel
=CUBESET("Sales", "[Product].[All Products].Children", "Products by Sales", 1, "[Measures].[Sales Amount]")
```

**ผลลัพธ์:** `ชุดของสินค้าเรียงลำดับจากน้อยไปมาก (Ascending) ตามยอดขาย`

sort_order=1 หมายถึง SortAscending จำเป็นต้องระบุ sort_by เป็น '[Measures].[Sales Amount]' เพื่อให้ระบบรู้ว่าจะเรียงตามค่าไหน แล้วลำดับทั้งหมดจะอัปเดตอัตโนมัติเมื่อข้อมูลในคิูบเปลี่ยน

### 3. ตัวอย่างที่ 3: ใช้ Order() ใน MDX Expression

```excel
=CUBESET("Finance", "Order([Time].[Month].Members, [Measures].[Amount], DESC)", "Months Sorted")
```

**ผลลัพธ์:** `ชุดของเดือนเรียงลำดับตามจำนวนจากมากไปน้อย`

เมื่อ MDX expression มี Order() function อยู่แล้ว คุณสามารถปล่อย sort_order=0 (SortNone) ไว้ได้ เพราะการเรียงลำดับถูกกำหนดในนิพจน์ MDX เอง วิธีนี้ประหยัดและเป็นมาตรฐาน

### 4. ตัวอย่างที่ 4: อ้างอิง CUBESET กับ CUBESETCOUNT

```excel
=CUBESETCOUNT(CUBESET("Sales", "[Customer].[Customer Country].Members"))
```

**ผลลัพธ์:** `ตัวเลขจำนวนประเทศทั้งหมดในข้อมูลลูกค้า`

CUBESET ส่งกลับชุดของประเทศ แล้ว CUBESETCOUNT นับจำนวนสมาชิกในชุดนั้น วิธีการผสม CUBE functions เหล่านี้ช่วยให้คุณสร้างรายงาน Dynamic ได้ง่าย

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

- ใช้ MDX expression แบบตรง เช่น '[Product].[All].Children' มีประสิทธิภาพกว่า CrossJoin() ที่ซับซ้อนทั้งหมด ถ้า expression ยาวและโปรแกรมช้า ลองลดความซับซ้อนลงดูครับ

- ผมแนะนำให้เขียน set_expression ในเซลล์แล้วอ้างอิง แทนที่จะพิมพ์โดยตรง วิธีนี้ทำให้จัดการค่า 255 ตัวอักษร ได้ดีกว่า และแก้ไขง่ายเวลาต้องทำให้ expression อื่น

- ถ้า CUBESET แสดง '#NAME?' บ่อยๆ ให้ตรวจสอบชื่อ connection ว่า match กับ Data Connections ใน Excel หรือเปล่า ชื่อต้องตรงกันพอดี (case-sensitive กับบางเซิร์ฟเวอร์)

- ส่วนตัวผมชอบใช้ Order() ใน MDX expression เอง แทนที่จะใช้ sort_order parameter ทำให้ logic ชัดเจน ง่ายต่อการจัดการในการ maintain

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

**Q: sort_order และ sort_by ต่างกันอย่างไร?**

sort_order ระบุ 'วิธีการ' เรียงลำดับ เช่น Ascending หรือ Descending ส่วน sort_by ระบุ 'ค่าไหน' ที่ใช้สำหรับเรียง เช่น [Measures].[Sales Amount] ซึ่ง sort_by จำเป็นต้องใช้เมื่อ sort_order เป็น 1 (Ascending) หรือ 2 (Descending) เท่านั้น ถ้า sort_order=0 ไม่ต้องใส่ sort_by

**Q: Set_expression ต้องมีรูปแบบอะไร?**

Set_expression ต้องเป็นนิพจน์ MDX (Multidimensional Expression) ที่ส่งกลับชุด เช่น [Product].Children (สมาชิกลูก) [Product].Members (สมาชิกทั้งหมด) หรือใช้ function เช่น Order() CrossJoin() Filter() ฯลฯ หรือคุณอ้างอิงเซลล์ที่มีตัวแปรชุด MDX ถ้า expression ยาวกว่า 255 ตัวอักษร ต้องเก็บไว้ในเซลล์แล้วอ้างอิงแทน

**Q: CUBESET ต่างจาก CUBEMEMBER อย่างไร?**

CUBEMEMBER ส่งกลับ 'สมาชิกตัวเดียว' (single member) จากคิูบ ส่วน CUBESET ส่งกลับ 'ชุดของสมาชิก' (set of multiple members) ที่สามารถใช้เป็น input ให้กับฟังก์ชัน CUBE อื่นๆ เช่น CUBESETCOUNT CUBERANKEDMEMBER ได้ ถ้าต้องการค่าตัวเดียว ใช้ CUBEMEMBER แต่ถ้าต้องการหลายค่า ใช้ CUBESET

**Q: ทำไม CUBESET แสดง #GETTING_DATA...?**

ข้อความ '#GETTING_DATA...' บอกว่า Excel กำลังรออยู่ว่าเซิร์ฟเวอร์คิูบจะประมวลผลและส่งข้อมูลกลับมา นี่เป็นสิ่งปกติครับ โดยเฉพาะเมื่อ set_expression มีความซับซ้อน หรือปริมาณข้อมูลเยอะ บางครั้งต้องรอไป 30 วินาที ถ้ารออีก ลองเช็คการเชื่อมต่อกับเซิร์ฟเวอร์

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

- [CUBERANKEDMEMBER – ดึงสมาชิกโดยเรียงลำดับอันดับ](https://www.thepexcel.com/functions/excel/cube/cuberankedmember/)
- [CUBESETCOUNT – นับจำนวนรายการในชุด](https://www.thepexcel.com/functions/excel/cube/cubesetcount/)
- [CUBEMEMBER – ดึงสมาชิกจากคิวบ์ OLAP](https://www.thepexcel.com/functions/excel/cube/cubemember/)

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

- [Microsoft Learn: CUBESET Function](https://support.microsoft.com/en-us/office/cubeset-function-5b2146bd-62d6-4d04-9d8f-670e993ee1d9) _(official)_
- [Microsoft Learn: CUBESETCOUNT Function](https://support.microsoft.com/en-us/office/cubesetcount-function-5e2a9edc-ddc8-44b7-9917-272642b23426) _(official)_
- [Microsoft Learn: CUBERANKEDMEMBER Function](https://support.microsoft.com/en-us/office/cuberankedmember-function-07efecde-e669-4075-b4bf-6b40df2dc4b3) _(official)_
- [MDX Function Reference (SQL Server Analysis Services)](https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/mdx/mdx-function-reference-mdx) _(official)_

---

_Source: [https://www.thepexcel.com/functions/excel/cube/cubeset/](https://www.thepexcel.com/functions/excel/cube/cubeset/)_
