Thep Excel

DISTINCT – ดึงรายการที่ไม่ซ้ำ (Unique Values)

ดึงค่าที่ไม่ซ้ำกันออกมาเป็นตาราง (ไม่รวม Blank พิเศษ)

DISTINCT คืนค่าตารางที่มีคอลัมน์เดียว (หรือทั้งตาราง) ซึ่งประกอบด้วยค่าที่ไม่ซ้ำกันจากคอลัมน์ที่ระบุ โดยไม่รวม Blank Row ที่เกิดจาก Referencial Integrity Violation (Invalid Relationship)

=DISTINCT( TableNameOrColumnName )

By ThepExcel AI Agent
1 December 2025

Syntax & Arguments

=DISTINCT( TableNameOrColumnName )

Argument Type Required Default Description
TableNameOrColumnName table/column Yes ชื่อตารางหรือคอลัมน์ที่ต้องการดึงค่าที่ไม่ซ้ำ

How it works

การนำไปใช้เป็น Iterator

ใช้สร้างตารางรายการสินค้าที่ไม่ซ้ำ เพื่อนำไปวนลูปคำนวณต่อใน SUMX หรือ AVERAGEX

การนับจำนวนแบบไม่ซ้ำ (Manual)

ใช้ COUNTROWS ครอบ DISTINCT เพื่อจำลองการทำงานของ DISTINCTCOUNT (แต่ DISTINCTCOUNT เร็วกว่า)

Examples

ตัวอย่างที่ 1: ดึงชื่อสินค้าทั้งหมดที่มีการขาย

แม้ใน Sales จะมีรหัส A001 ซ้ำกันเป็นพันรอบ แต่ DISTINCT จะคืนค่า A001 มาแค่แถวเดียว
DAX Formula:

Unique Products = DISTINCT( Sales[ProductCode] )

Result:

ตารางรายการรหัสสินค้าที่ไม่ซ้ำกันจากตาราง Sales

ตัวอย่างที่ 2: สร้างตารางใหม่จากข้อมูลที่ไม่ซ้ำ

ใช้ทำความสะอาดข้อมูลซ้ำซ้อนในกรณีที่เป็นตารางนำเข้า
DAX Formula:

Distinct Table = DISTINCT( 'Product' )

Result:

ตาราง Product ที่ไม่มีแถวซ้ำ (ถ้าเดิมไม่ซ้ำอยู่แล้วก็ได้ผลเท่าเดิม)

ตัวอย่างที่ 3: นับจำนวนแบบไม่ซ้ำด้วยสูตรผสม

ใช้ DISTINCT ดึงรายการลูกค้าออกมาก่อน แล้วใช้ COUNTROWS นับจำนวนแถว
DAX Formula:

Unique Customers = COUNTROWS( DISTINCT(Sales[CustomerID]) )

Result:

จำนวนลูกค้าที่ไม่ซ้ำ

FAQs

ควรใช้ DISTINCT หรือ VALUES?

โดยทั่วไปแนะนำให้ใช้ VALUES เพราะหากมีความสัมพันธ์ที่ผิดพลาด (เช่น ขายสินค้าที่ไม่มีใน Master) การใช้ VALUES จะทำให้เราเห็น Blank Row ซึ่งช่วยเตือนว่ามีข้อมูลหาย แต่ DISTINCT จะซ่อนปัญหานั้นไว้

Resources & Related

Additional Notes

DISTINCT คือฟังก์ชันที่ใช้สำหรับดึงรายการข้อมูลที่ไม่ซ้ำกัน (Unique/Distinct Values) ออกมาจากคอลัมน์หรือตารางที่ระบุ โดยจะตัดรายการที่ซ้ำกันออกให้เหลือเพียงรายการเดียว

ความแตกต่างสำคัญระหว่าง DISTINCT และ VALUES

ทั้งคู่ทำงานคล้ายกันมาก แต่จุดต่างคือ DISTINCT จะไม่คืนค่า Blank Row ที่เกิดจาก Invalid Relationship (ความสัมพันธ์ที่ไม่สมบูรณ์) ในขณะที่ VALUES จะคืนค่า Blank Row นั้นมาด้วย

Leave a Reply

Your email address will not be published. Required fields are marked *