---
title: COUNTAX – นับผลลัพธ์ไม่ว่างจากนิพจน์แบบไล่ทีละแถว
url: https://www.thepexcel.com/functions/dax/aggregation/countax-dax/
type: function-explainer
program: DAX
syntax: "COUNTAX(<table>, <expression>)"
date: 2025-12-13
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 5
  usefulness: 5
---

# COUNTAX – นับผลลัพธ์ไม่ว่างจากนิพจน์แบบไล่ทีละแถว

> COUNTAX ประเมินนิพจน์ต่อแถวในตาราง แล้วนับจำนวนผลลัพธ์ที่ไม่ว่าง เหมาะกับการนับค่าที่อาจเป็นข้อความ

## คำอธิบาย

COUNTAX ประเมินนิพจน์ต่อแถวในตาราง แล้วนับจำนวนผลลัพธ์ที่ไม่ว่าง เหมาะกับการนับค่าที่อาจเป็นข้อความ ตรรกะ หรือนิพจน์ที่ซับซ้อน ไม่ใช่แค่ตัวเลข

## Syntax

```excel
COUNTAX(&lt;table&gt;, &lt;expression&gt;)
```

**Variant**

```excel
COUNTAX(&lt;table&gt;, &lt;expression&gt;)
```

คำนวณ expression ต่อแถว แล้วนับจำนวนผลลัพธ์ที่ไม่ว่างทุกชนิด

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| table | Yes | table |  | ตารางที่ต้องการไล่ประเมินทีละแถว อาจเป็น table ทั้งตัว หรือ FILTER ที่คืน table |
| expression | Yes | scalar |  | นิพจน์ที่ประเมินในแต่ละแถว อาจคืนค่าข้อความ ตรรกะ ตัวเลข หรือวันที่ ตราบใดที่ไม่ใช่ table |

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

### นับจำนวนแถวที่นิพจน์คืนค่าข้อความไม่ว่าง

เช่น นับจำนวนแถวที่มีรหัส/สถานะที่ถูกคำนวณและไม่ว่าง

_เหมาะกับ:_ countax-text-result

### นับจำนวนแถวที่มีผลลัพธ์จริงจากเงื่อนไข

เมื่อนิพจน์อาจคืน BLANK ในบางแถว และคุณต้องการนับเฉพาะแถวที่ไม่ว่าง

_เหมาะกับ:_ countax-nonblank-expression

## ตัวอย่าง

### 1. นับจำนวนแถว Code ที่ไม่ว่าง

```excel
Product Count =
COUNTAX(Products, Products[Code])
```

**ผลลัพธ์:** `นับแถวที่ Products[Code] มีค่า`

ใช้กับคอลัมน์ข้อความ COUNTAX จะนับแถวที่ Code ไม่ว่างเท่านั้น ซึ่งดีกว่า COUNTA ในกรณีที่ต้องการนับเฉพาะแถวที่ expression คืนค่า

### 2. นับจำนวนแถวที่นิพจน์คำนวณได้ผลลัพธ์ที่ไม่ว่าง

```excel
Valid Sales Count =
COUNTAX(
    Sales,
    IF(Sales[Quantity] > 0 && Sales[Amount] > 0, 1, BLANK())
)
```

**ผลลัพธ์:** `นับแถวที่ Quantity และ Amount ต่างก็มากกว่า 0`

ใช้ IF ร่วมกับ COUNTAX เพื่อนับแถวที่เข้าเงื่อนไข ถ้า condition เป็นจริง คืน 1 (non-blank) ถ้าเป็นเท็จ คืน BLANK ดังนั้น COUNTAX จะนับแต่แถวที่เข้าเงื่อนไข

### 3. นับจำนวนแถว Notes ที่มีข้อมูล

```excel
Notes Count =
COUNTAX(Orders, Orders[Notes])
```

**ผลลัพธ์:** `นับแถวที่มี Notes ไม่เป็นค่าว่าง`

เหมาะกับคอลัมน์ข้อความอักษร เพราะ COUNTAX นับค่าที่ไม่ว่าง และ COUNTA อาจนับอักษรว่างได้ขึ้นอยู่กับโครงสร้าง

### 4. นับ Sales ที่มี Related Product

```excel
Related Product Count =
VAR FilteredSales = FILTER(Sales, NOT(ISBLANK(RELATED(Products[ProductID]))))
RETURN
    COUNTAX(FilteredSales, RELATED(Products[ProductName]))
```

**ผลลัพธ์:** `นับแถว Sales ที่มี Product ที่ relate ได้`

ใช้ VAR เก็บ FILTER ผลก่อน แล้วค่อย COUNTAX กับ RELATED column จากอีกตาราง จะ debug ง่ายกว่า

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

- ผมแนะนำให้ใช้ VAR เก็บ FILTER ผลก่อน แล้วค่อย COUNTAX กับ VAR นั้น จะ debug ง่ายและอ่านโค้ดชัดเจนกว่า

- ถ้าแค่นับคอลัมน์เดียวว่างหรือไม่ว่าง ใช้ COUNTA ก็พอ ประสิทธิภาพดีกว่า แต่ถ้า expression ซับซ้อน COUNTAX คือเลือกที่ถูก

- ระวัง BLANK result: ถ้า expression ของแถวนั้นคืน BLANK COUNTAX จะไม่นับ ซึ่งต่างจาก COUNT ที่ตั้งแต่ต้นแล้ว

- ส่วนตัวผม COUNTAX + FILTER ผสมกันดีมากสำหรับการนับแบบ conditional ทำให้โค้ด DAX อ่านง่ายเหมือนประโยค SQL

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

**Q: COUNTAX ต่างจาก COUNTX อย่างไร?**

ทั้งคู่เป็น iterator แต่ COUNTAX นับผลลัพธ์ที่ไม่ว่าง (non-blank) ของ expression โดยไม่สนใจประเภทข้อมูล ส่วน COUNTX นับเฉพาะค่าตัวเลขหรือวันที่เท่านั้น ถ้า expression ของคุณอาจคืนข้อความหรือค่าว่าง ใช้ COUNTAX จะเหมาะกว่า

**Q: ควรใช้ COUNTA หรือ COUNTAX?**

ใช้ COUNTA เมื่อต้องการนับค่าไม่ว่างในคอลัมน์โดยตรง แต่ใช้ COUNTAX เมื่อต้องการนับผลลัพธ์ของนิพจน์ที่ประเมินต่อแถว เช่น IF condition หรือ RELATED column ส่วนตัวผมชอบ COUNTAX เพราะมี row context ให้เล่นได้เยอะกว่า

**Q: COUNTAX ใช้กับ filter context ได้หรือ?**

ได้ครับ COUNTAX ประเมินนิพจน์ในแต่ละแถว ดังนั้น row context จะนำมาคำนวณค่า expression เสมอ หากคุณใช้ร่วมกับ FILTER ที่สร้าง filter context เสียก่อน expression จะประเมินในแถวที่ FILTER คัดเลือกเท่านั้น

**Q: COUNTAX return BLANK ตรงไหน?**

เมื่อตาราง (table parameter) ว่าง หรือไม่มีแถวเลย ตัว expression จะไม่ประเมินเลย และ COUNTAX จะ return BLANK ไม่ใช่ 0

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

- [COUNTA – นับค่าไม่ว่างทุกชนิดในคอลัมน์](https://www.thepexcel.com/functions/dax/aggregation/counta-dax/)
- countx
- [COUNT – นับจำนวนแถวที่มีค่าไม่ว่างในคอลัมน์](https://www.thepexcel.com/functions/dax/aggregation/count-dax/)

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

- [DAX Guide: COUNTAX](http://dax.guide/countax/) _(guide)_
- [Microsoft Learn: COUNTAX](https://learn.microsoft.com/en-us/dax/countax-function-dax) _(official)_
- [SQLBI: Iterator Functions](https://sqlbi.com/articles/iterator-functions-in-dax/) _(guide)_

---

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