---
title: DISTINCTCOUNTNOBLANK – นับจำนวนค่าที่ไม่ซ้ำ (ไม่รวม Blank)
url: https://www.thepexcel.com/functions/dax/aggregation/distinctcountnoblank-dax/
type: function-explainer
program: DAX
syntax: "DISTINCTCOUNTNOBLANK(<column>)"
date: 2025-12-13
updated: 2025-12-17
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

# DISTINCTCOUNTNOBLANK – นับจำนวนค่าที่ไม่ซ้ำ (ไม่รวม Blank)

> นับค่าที่ไม่ซ้ำโดยไม่รวม BLANK

## คำอธิบาย

DISTINCTCOUNTNOBLANK นับจำนวนค่าที่ไม่ซ้ำในคอลัมน์ โดยไม่รวมค่า BLANK จึงเหมาะกับการนับรายการที่ต้องการตัดค่าว่างออกไป เช่น นับจำนวนลูกค้าที่ไม่ซ้ำโดยไม่ให้ BLANK ถูกนับ

## Syntax

```excel
DISTINCTCOUNTNOBLANK(&lt;column&gt;)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| column | Yes | column |  | คอลัมน์ที่ต้องการนับค่าที่ไม่ซ้ำ (ไม่รวม BLANK) |

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

### นับจำนวนลูกค้าที่ไม่ซ้ำโดยไม่รวมค่าว่าง

เหมาะเมื่อคอลัมน์ CustomerID อาจมีค่าว่าง หรือมี Blank จากความสัมพันธ์ ทำให้ DISTINCTCOUNT ปกตินับเพิ่ม 1

_เหมาะกับ:_ unique-customer

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

ใช้กับรหัสสินค้า/รหัสรายการเพื่อกันข้อมูลที่ว่างหรือไม่ถูกต้องไม่ให้เข้าไปนับ

_เหมาะกับ:_ unique-sku

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: นับจำนวนลูกค้าที่ไม่ซ้ำ (ไม่รวม Blank)

```excel
Customers (No Blank) = DISTINCTCOUNTNOBLANK( Sales[CustomerID] )
```

**ผลลัพธ์:** `จำนวน CustomerID ที่ไม่ซ้ำ โดยไม่รวม Blank`

เหมาะกับคอลัมน์รหัสที่อาจมีค่าว่าง เพราะผลลัพธ์จะไม่นับ Blank เป็น 1

### 2. ตัวอย่างที่ 2: เปรียบเทียบ DISTINCTCOUNT กับ DISTINCTCOUNTNOBLANK

```excel
Diff =
VAR WithBlank = DISTINCTCOUNT( Sales[CustomerID] )
VAR NoBlank = DISTINCTCOUNTNOBLANK( Sales[CustomerID] )
RETURN WithBlank - NoBlank
```

**ผลลัพธ์:** `ส่วนต่าง (มักเป็น 0 หรือ 1)`

ถ้ามี Blank ถูกนับใน DISTINCTCOUNT ส่วนต่างจะเป็น 1 ช่วยให้ตรวจพบว่ามีค่า Blank เข้ามาเกี่ยวข้องกับการนับ

### 3. ตัวอย่างที่ 3: สัดส่วนข้อมูลที่มีรหัสจริง (ไม่ใช่ค่าว่าง)

```excel
Pct Valid IDs =
VAR WithBlank = DISTINCTCOUNT(Sales[CustomerID])
VAR NoBlank = DISTINCTCOUNTNOBLANK(Sales[CustomerID])
RETURN IF(WithBlank = 0, BLANK(), NoBlank / WithBlank)
```

**ผลลัพธ์:** `สัดส่วนข้อมูลที่ไม่ใช่ Blank (เช่น 0.99)`

ถ้าสัดส่วนต่ำ แปลว่ามี Blank เข้ามาปะปนในคอลัมน์รหัสมาก ควรตรวจสอบคุณภาพข้อมูล

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

คำแนะนำ: ใช้ DISTINCTCOUNTNOBLANK กับคอลัมน์รหัส (ID) ที่ไม่ควรมีค่าว่าง เพื่อกัน BLANK ทำให้ผลนับเพี้ยนโดยไม่รู้ตัว

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

**Q: ทำไม DISTINCTCOUNT ถึงนับ BLANK ด้วย?**

เพราะใน DAX ค่า BLANK ถือเป็นค่าหนึ่งในโดเมนของคอลัมน์ เมื่อมี BLANK ในข้อมูลหรือเกิด Blank จากความสัมพันธ์ DISTINCTCOUNT จึงนับ BLANK เป็น 1 ค่า

**Q: ถ้าไม่มี BLANK เลย จำเป็นต้องใช้ DISTINCTCOUNTNOBLANK ไหม?**

ถ้าคุณมั่นใจว่าคอลัมน์ไม่มี BLANK และไม่มี Blank จากความสัมพันธ์ DISTINCTCOUNT ก็เพียงพอ แต่ DISTINCTCOUNTNOBLANK ช่วยให้ความตั้งใจชัดเจนและปลอดภัยขึ้นในโมเดลที่ข้อมูลเปลี่ยนแปลงได้

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

- [distinctcount](https://www.thepexcel.com/distinctcount/)

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

- [DAX Guide: DISTINCTCOUNTNOBLANK](https://dax.guide/distinctcountnoblank/) _(documentation)_

---

_Source: [https://www.thepexcel.com/functions/dax/aggregation/distinctcountnoblank-dax/](https://www.thepexcel.com/functions/dax/aggregation/distinctcountnoblank-dax/)_
