ตัวอย่างที่ 1: นับจำนวนวันที่ขายได้ (ไม่ซ้ำ)
Selling Days = COUNTROWS( VALUES( Sales[OrderDate] ) )
จำนวนวันที่ที่มีการขายเกิดขึ้นจริง
ดึงค่าที่ไม่ซ้ำกันออกมาเป็นตาราง (รวม Blank พิเศษ)
VALUES คืนค่าตารางที่มีคอลัมน์เดียว (หรือทั้งตาราง) ซึ่งประกอบด้วยค่าที่ไม่ซ้ำกัน รวมถึง Blank Row พิเศษที่เกิดจาก Invalid Relationship ด้วย หากผลลัพธ์มีค่าเดียว สามารถถูกแปลงเป็น Scalar Value ได้อัตโนมัติ
=VALUES( TableNameOrColumnName )
=VALUES( TableNameOrColumnName )
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| TableNameOrColumnName | table/column | Yes | ชื่อตารางหรือคอลัมน์ที่ต้องการดึงค่า |
ใช้ VALUES(Product[Color]) ใน SUMX เพื่อวนคำนวณยอดขายทีละสี
ใช้แสดงข้อความว่าผู้ใช้กำลังเลือกดูข้อมูลของใครอยู่ (เช่น "Sales Report for: John")
Selling Days = COUNTROWS( VALUES( Sales[OrderDate] ) )
จำนวนวันที่ที่มีการขายเกิดขึ้นจริง
Selected Product = "Product: " & VALUES( 'Product'[ProductName] )
Product: Apple (ถ้าเลือก Apple อันเดียว)
Avg Sales per Category =
AVERAGEX(
VALUES('Product'[Category]),
[Total Sales]
)
ค่าเฉลี่ยของยอดขายรายหมวดหมู่
VALUES จะคืนค่า Blank Row ที่เกิดจากความสัมพันธ์ที่ไม่สมบูรณ์ (Referential Integrity Violation) มาด้วย ส่วน DISTINCT จะตัดทิ้ง
เพราะ VALUES คืนค่าเป็น ‘ตาราง’ แต่คุณกำลังพยายามนำไปใช้ในที่ที่ต้องการ ‘ค่าเดียว’ (Scalar) ปัญหานี้แก้ได้โดยใช้ IF(HASONEVALUE(…), VALUES(…)) หรือใช้ SELECTEDVALUE แทน
VALUES เป็นฟังก์ชันยอดนิยมในการดึงค่าที่ไม่ซ้ำ (Unique Values) จากคอลัมน์ เพื่อนำไปใช้ในการคำนวณต่อ (เช่น การวนลูป) หรือใช้ในการคืนค่ากลับมาเป็น Scalar Value ในกรณีที่มีค่าเดียว
ความพิเศษของ VALUES คือมันจะรักษา Blank Row ที่ระบบสร้างขึ้นอัตโนมัติเมื่อเจอข้อมูลที่ไม่ตรงกันในความสัมพันธ์ (Invalid Relationship) ซึ่งช่วยให้ผลรวมยอดขายยังคงถูกต้องแม้ข้อมูล Master จะไม่ครบถ้วน