Thep Excel

DISTINCTCOUNT – นับจำนวนค่าเอกลักษณ์ในคอลัมน์

DISTINCTCOUNT นับจำนวนค่าที่แตกต่างกันทั้งหมดในคอลัมน์ รวมถึง BLANK values ถ้าไม่มีแถวข้อมูล จะคืนค่า BLANK

=DISTINCTCOUNT(<column>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
8/10

Difficulty
3/10

Usefulness
8/10

Syntax & Arguments

=DISTINCTCOUNT(<column>)

Argument Type Required Default Description
column Column Yes คอลัมน์ที่ต้องการนับค่าเอกลักษณ์ (สามารถใช้ได้กับ data type ใดก็ได้ – number, text, date, etc.)

How it works

นับจำนวนลูกค้าที่มาใช้บริการ

นับจาก CustomerID ในตาราง Sales เพื่อดูว่ามีลูกค้าไม่ซ้ำกี่คน

นับจำนวน SKU ที่ขายได้

ดูความหลากหลายของสินค้าที่ขายออกไป

Examples

นับ customer ที่ซื้อสินค้า
Total Customers = DISTINCTCOUNT(Sales[CustomerID])
ถ้า Sales table มี 100 แถว แต่ customer ที่ต่างกันมี 15 คน DISTINCTCOUNT จะคืน 15 ไม่ใช่ 100
DAX Formula:

Total Customers = DISTINCTCOUNT(Sales[CustomerID])

Result:

15

นับค่าเอกลักษณ์รวมถึง BLANK
Unique Categories = DISTINCTCOUNT(Products[SubCategory])
นับค่าเอกลักษณ์: "Electronics" (1), "Furniture" (1), BLANK (1) = รวม 3 ค่า (แม้ว่ามี BLANK 2 แถว แต่นับเป็น 1 ค่าเท่านั้น)
DAX Formula:

Unique Categories = DISTINCTCOUNT(Products[SubCategory])

Result:

3

ใช้กับ FILTER เพื่อนับเฉพาะบาง category
Electronics Customers = VAR ElectronicsOrders = FILTER(Sales, Sales[Category] = "Electronics") RETURN DISTINCTCOUNT(ElectronicsOrders[CustomerID])
FILTER ตรวจเลือกเฉพาะแถว Electronics (3 แถว: C001, C002, C004) แล้ว DISTINCTCOUNT นับ customer ที่แตกต่าง = 3
DAX Formula:

Electronics Customers = 
VAR ElectronicsOrders = FILTER(Sales, Sales[Category] = "Electronics")
RETURN
    DISTINCTCOUNT(ElectronicsOrders[CustomerID])

Result:

3

เปรียบเทียบ DISTINCTCOUNT vs DISTINCTCOUNTNOBLANK
With Blanks = DISTINCTCOUNT(Orders[Status]) → 4 (Completed, Pending, BLANK, Cancelled) Without Blanks = DISTINCTCOUNTNOBLANK(Orders[Status]) → 3 (Completed, Pen…
DISTINCTCOUNT นับ BLANK เป็นค่า 1 ค่า แต่ DISTINCTCOUNTNOBLANK ไม่นับ BLANK เลย ใช้ DISTINCTCOUNTNOBLANK เมื่อต้องการไม่สนใจค่าว่าง
DAX Formula:

With Blanks = DISTINCTCOUNT(Orders[Status])     → 4 (Completed, Pending, BLANK, Cancelled)

Without Blanks = DISTINCTCOUNTNOBLANK(Orders[Status]) → 3 (Completed, Pending, Cancelled)

Result:

ด้วย BLANK = 4, ไม่มี BLANK = 3

FAQs

ทำไม DISTINCTCOUNT นับ BLANK ด้วย

DISTINCTCOUNT นับ BLANK ว่าเป็นค่า 1 ค่า เพราะ ใน DAX ค่าว่างถือเป็นค่าเอกลักษณ์หนึ่ง ถ้าต้องการไม่นับ BLANK ให้ใช้ DISTINCTCOUNTNOBLANK แทน

DISTINCTCOUNT กับ COUNT ต่างกันอย่างไร

COUNT นับจำนวนแถว (non-blank) แต่ DISTINCTCOUNT นับจำนวนค่าที่แตกต่าง เช่น Customer C001 มี 5 order COUNT = 5, DISTINCTCOUNT = 1

DISTINCTCOUNT เทียบเท่ากับ COUNTROWS(DISTINCT()) หรือไม่

ใช่ DISTINCTCOUNT(table[column]) เทียบเท่ากับ COUNTROWS(DISTINCT(table[column])) แต่ DISTINCTCOUNT ง่ายและเร็วกว่า

ใช้ DISTINCTCOUNT ได้หรือไม่เมื่อคำนวณใน Pivot Table

ได้ แต่ระวังเรื่อง Totals ที่ double-count ได้ เช่น ถ้า Customer C001 ปรากฏในหลาย Product Category แล้วหาผลรวม total อาจไม่เท่ากับของจริง

Resources & Related

Additional Notes

DISTINCTCOUNT เป็นฟังก์ชันสำหรับนับค่าเอกลักษณ์ (unique values) ในคอลัมน์ โดยนับทั้ง BLANK values ด้วย

ที่เจ๋งคือ DISTINCTCOUNT นับเฉพาะว่ามีกี่ค่าที่แตกต่างกัน ไม่ใช่นับจำนวนแถว เช่น ถ้า Products[SubCategory] มี “Electronics” 5 แถว, “Furniture” 3 แถว, BLANK 2 แถว ผลลัพธ์จะเป็น 3 (สามค่าเอกลักษณ์) ไม่ใช่ 10

ส่วนตัวผมคิดว่า DISTINCTCOUNT มีประโยชน์มากในการวิเคราะห์ Cardinality เช่น “มีกี่ลูกค้าที่ซื้อสินค้า” ซึ่ง COUNT หรือ COUNTA ทำไม่ได้ 😎

ข้อเตือน: ถ้า BLANK หลายแถวในข้อมูล DISTINCTCOUNT จะนับ BLANK ว่าเป็น 1 ค่า ถ้าต้องการไม่นับ BLANK ให้ใช้ DISTINCTCOUNTNOBLANK แทน

Leave a Reply

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