---
title: VALUES – ดึงค่าที่ไม่ซ้ำจากคอลัมน์ (รวม Blank จากข้อผิดพลาดความสัมพันธ์)
url: https://www.thepexcel.com/functions/dax/table-manipulation/values-dax/
type: function-explainer
program: DAX
syntax: "VALUES(<TableNameOrColumnName>)"
date: 2025-12-13
updated: 2025-12-20
scores:
  popularity: 8
  difficulty: 4
  usefulness: 8
---

# VALUES – ดึงค่าที่ไม่ซ้ำจากคอลัมน์ (รวม Blank จากข้อผิดพลาดความสัมพันธ์)

> VALUES ดึงค่าที่ไม่ซ้ำจากคอลัมน์ หรือดึงแถวทั้งหมดจากตาราง โดยรวมแถว BLANK ที่เกิดจากข้อผิดพลาดของคว

## คำอธิบาย

VALUES ดึงค่าที่ไม่ซ้ำจากคอลัมน์ หรือดึงแถวทั้งหมดจากตาราง โดยรวมแถว BLANK ที่เกิดจากข้อผิดพลาดของความสัมพันธ์ (Referential Integrity Violations) ส่วน DISTINCT จะไม่รวมแถว BLANK นี้

## Syntax

```excel
VALUES(&lt;TableNameOrColumnName&gt;)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| TableNameOrColumnName | Yes | Column or Table |  | ชื่อคอลัมน์หรือตารางที่ต้องการดึงค่าที่ไม่ซ้ำ ต้องเป็นข้อมูลจริงจากโมเดล Data ไม่สามารถใช้ตัวแปร VAR ได้ |

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

### ใช้เป็นตัวตั้งต้นในการวนลูป (Iterator)

ใช้ VALUES(Product[Color]) ใน SUMX เพื่อวนคำนวณยอดขายทีละสี

_เหมาะกับ:_ iterator-base

### คืนค่าชื่อที่ถูกเลือกใน Slicer

ใช้แสดงข้อความว่าผู้ใช้กำลังเลือกดูข้อมูลของใครอยู่ (เช่น "Sales Report for: John")

_เหมาะกับ:_ dynamic-title

## ตัวอย่าง

### 1. นับจำนวนผลิตภัณฑ์ที่ไม่ซ้ำ

```excel
Unique Products = COUNTROWS(VALUES(Products[ProductID]))
```

**ผลลัพธ์:** `จำนวนเต็ม เช่น 50 (สมมติว่ามีผลิตภัณฑ์ 50 รายการที่ไม่ซ้ำ)`

VALUES ดึงรายการผลิตภัณฑ์ที่ไม่ซ้ำทั้งหมด แล้ว COUNTROWS นับจำนวนแถว หากมีข้อผิดพลาดของความสัมพันธ์ VALUES จะรวมแถว BLANK ไว้ด้วย ต่างจาก DISTINCT ที่จะตัด BLANK ออก

### 2. นับใบสั่งซื้อที่ไม่ซ้ำในแต่ละหมวดหมู่

```excel
Unique Orders = CALCULATE(
  COUNTROWS(VALUES(Orders[OrderNumber])),
  Products[Category] = "Electronics"
)
```

**ผลลัพธ์:** `จำนวนใบสั่งซื้อที่ไม่ซ้ำสำหรับหมวดหมู่ Electronics`

ใช้ CALCULATE รวมกับ VALUES เพื่อนับใบสั่งซื้อที่ไม่ซ้ำพร้อมกับเคารพ Filter Context ของการเลือกหมวดหมู่ Products

### 3. ตรวจสอบข้อผิดพลาดของความสัมพันธ์ข้อมูล

```excel
Integrity Check = 
VAR SalesProducts = COUNTROWS(VALUES(Sales[ProductID]))
VAR MasterProducts = COUNTROWS(ALL(Products))
RETURN
  IF(SalesProducts > MasterProducts, "มีข้อมูล Sales ที่ไม่มีใน Master", "ข้อมูลสะอาด")
```

**ผลลัพธ์:** `ข้อความ "มีข้อมูล Sales ที่ไม่มีใน Master" หรือ "ข้อมูลสะอาด"`

VALUES รวมแถว BLANK จากข้อมูลที่ไม่มีความสัมพันธ์ได้ สามารถนำมาเปรียบเทียบกับจำนวนสินค้าใน Master เพื่อตรวจสอบข้อผิดพลาด

### 4. ใช้ VALUES กับตารางทั้งหมด

```excel
Total Store Rows = COUNTROWS(VALUES(Store))
```

**ผลลัพธ์:** `จำนวนแถวทั้งหมดในตาราง Store รวมแถว BLANK ถ้ามี`

เมื่อส่งตารางทั้งหมดให้ VALUES มันจะดึงแถวทั้งหมด และหากมีแถว BLANK จากข้อผิดพลาดของความสัมพันธ์จะรวมไว้ด้วย

### 5. วนลูปคำนวณด้วย SUMX

```excel
Average Sales by Category = 
AVERAGEX(
  VALUES(Products[Category]),
  CALCULATE(SUM(Sales[Amount]))
)
```

**ผลลัพธ์:** `ค่าเฉลี่ยของยอดขายรายหมวดหมู่`

VALUES สร้างตารางหมวดหมู่ที่ไม่ซ้ำ แล้ว AVERAGEX วนลูปคำนวณยอดขายของแต่ละหมวดหมู่ ก่อนจะหาค่าเฉลี่ย

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

- VALUES จะคำนึงถึง Filter Context โดยอัตโนมัติ ดังนั้นใช้ได้ดีในการกำหนดขอบเขตการคำนวณ

- หากต้องตรวจสอบข้อมูลที่ไม่สะอาด (ข้อผิดพลาดของความสัมพันธ์) VALUES จะช่วยจับเจอปัญหาได้

- ในกรณีส่วนใหญ่ DISTINCT จะเร็วกว่าและทำงานได้ดีกว่า VALUES เพราะไม่ต้องจัดการแถว BLANK

- ใช้ COUNTROWS ร่วมกับ VALUES เพื่อนับค่าที่ไม่ซ้ำ: COUNTROWS(VALUES(Column))

- หากต้องการค่าเดี่ยวจากการเลือก ให้ใช้ SELECTEDVALUE แทน VALUES จะมีประสิทธิภาพมากกว่า

- VALUES ทำงานได้ดีเมื่อใช้ร่วมกับ Iterator Functions เช่น SUMX AVERAGEX MAXX

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

**Q: VALUES กับ DISTINCT ต่างกันอย่างไร?**

VALUES รวมแถว BLANK ที่เกิดจากข้อผิดพลาดของความสัมพันธ์ (referential integrity violations) ขณะที่ DISTINCT ไม่รวม DISTINCT ยังสามารถทำงานกับตัวแปร VAR ได้ แต่ VALUES ไม่ได้ ส่วนใหญ่ DISTINCT มักใช้บ่อยกว่า VALUES ใน DAX ปัจจุบัน แต่ VALUES ยังมีประโยชน์สำหรับการตรวจสอบคุณภาพข้อมูล

**Q: ทำไม VALUES ต้องใช้เป็นฟังก์ชัน Nested ไม่สามารถใช้คนเดียวได้?**

VALUES ไม่ส่งค่ากลับเป็นสเกลาร์ (scalar value) มันส่งกลับ Table object ดังนั้นต้องใช้ร่วมกับฟังก์ชันอื่นเช่น COUNTROWS SUMX AVERAGEX หรือ FILTER เพื่อให้ได้ผลลัพธ์ที่มีประโยชน์

**Q: ใช้ VALUES กับ DirectQuery ได้ไหม?**

ไม่ได้ VALUES ไม่รองรับใน DirectQuery mode สำหรับ Calculated Columns หรือ RLS Rules คุณต้องใช้โหมด Import หรือ Dual

**Q: VALUES กับ SELECTEDVALUE ต่างกันอย่างไร?**

SELECTEDVALUE ส่งค่าเดี่ยวกลับ (scalar) เมื่อมีการเลือกเพียงค่าเดียว ในขณะที่ VALUES ส่งตาราง Table ของค่าทั้งหมด Microsoft แนะนำให้ใช้ SELECTEDVALUE แทน VALUES ในกรณีส่วนใหญ่ เพราะมีประสิทธิภาพและความปลอดภัยมากขึ้น

**Q: VALUES ทำงานกับ Filter Context อย่างไร?**

VALUES จะคำนึงถึง Filter Context ที่มีอยู่ หากคุณกำลังดูข้อมูลสำหรับหมวดหมู่เดี่ยว VALUES จะดึงค่าที่ไม่ซ้ำเฉพาะในหมวดหมู่นั้น หากต้องการไม่สนใจ Filter Context ให้ใช้ ALLEXCEPT หรือ ALL

**Q: ทำไมใช้ VALUES แล้ว Error "A table of multiple values was supplied"?**

เพราะ VALUES คืนค่าเป็นตาราง แต่คุณกำลังพยายามนำไปใช้ในที่ที่ต้องการค่าเดี่ยว (Scalar) วิธีแก้คือใช้ IF(HASONEVALUE(...), VALUES(...)) หรือใช้ SELECTEDVALUE แทน

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

- [DISTINCT – ดึงรายการที่ไม่ซ้ำ (Unique Values) พร้อมหลีกหนีค่า Blank Row](https://www.thepexcel.com/functions/dax/table-manipulation/distinct-dax/)
- [SELECTEDVALUE – ดึงค่าเดียวจาก Filter Context](https://www.thepexcel.com/functions/dax/filter/selectedvalue-dax/)
- [COUNTROWS – นับจำนวนแถวในตารางและเทบิลเสมือน](https://www.thepexcel.com/functions/dax/aggregation/countrows-dax/)
- [SUMMARIZE – จัดกลุ่มข้อมูลและสร้างตารางสรุป (Table Grouping)](https://www.thepexcel.com/functions/dax/table-manipulation/summarize-dax/)
- [FILTER – กรองตารางด้วยเงื่อนไขที่ซับซ้อน (Iterator Function)](https://www.thepexcel.com/functions/dax/filter/filter-dax/)
- [ALLEXCEPT – ล้างตัวกรองทั้งหมดยกเว้นคอลัมน์ที่ระบุ](https://www.thepexcel.com/functions/dax/filter/allexcept-dax/)
- [HASONEVALUE – ตรวจสอบว่ามีค่าเดียวในบริบท](https://www.thepexcel.com/functions/dax/information/hasonevalue-dax/)

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

- [Microsoft Learn - VALUES (DAX)](https://learn.microsoft.com/en-us/dax/values-function-dax) _(official)_
- [DAX.Guide - VALUES](https://dax.guide/values/) _(guide)_
- [Microsoft Docs - DISTINCT Function](https://learn.microsoft.com/en-us/dax/distinct-function-dax) _(official)_
- [Microsoft Docs - SELECTEDVALUE Function](https://learn.microsoft.com/en-us/dax/selectedvalue-function-dax) _(official)_

---

_Source: [https://www.thepexcel.com/functions/dax/table-manipulation/values-dax/](https://www.thepexcel.com/functions/dax/table-manipulation/values-dax/)_
