---
title: ALLNOBLANKROW – ล้างตัวกรองทั้งหมดและตัด Blank Row ออก
url: https://www.thepexcel.com/functions/dax/filter/allnoblankrow-dax/
type: function-explainer
program: DAX
syntax: "ALLNOBLANKROW(<table_or_column>)"
date: 2025-12-13
updated: 2025-12-17
scores:
  popularity: 4
  difficulty: 5
  usefulness: 4
---

# ALLNOBLANKROW – ล้างตัวกรองทั้งหมดและตัด Blank Row ออก

> ล้างตัวกรองและตัดแถวว่างออก เหมาะกับกรณีข้อมูลหลุดความสัมพันธ์

## คำอธิบาย

ALLNOBLANKROW ทำงานคล้าย ALL แต่มีจุดเด่นคือ “ตัดแถวว่าง” ที่ระบบสร้างขึ้นอัตโนมัติเมื่อข้อมูลหลุดความสัมพันธ์ เช่น คีย์ในตารางข้อเท็จจริงไม่พบในตารางมิติ จึงเหมาะกับการคำนวณยอดรวม/สัดส่วนที่ไม่ต้องการให้แถวว่างเข้ามาปนผลลัพธ์ และยังใช้เป็นตัวช่วยตรวจจับปัญหาคุณภาพข้อมูลในโมเดลได้ด้วย

## Syntax

```excel
ALLNOBLANKROW(&lt;table_or_column&gt;)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| table_or_column | Yes | table/column |  | ตารางหรือคอลัมน์ที่ต้องการคืนค่าทั้งหมด/ล้างตัวกรอง โดยตัดแถวว่างออก (แถวว่างมักเกิดจากคีย์ไม่ตรงกันระหว่างตารางข้อเท็จจริงและตารางมิติ) |

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

### ใช้ใน FILTER เพื่อวนลูปโดยไม่รวมแถวว่าง

ใช้ ALLNOBLANKROW ส่งคืนตารางที่มีทุกแถว “ยกเว้นแถวว่าง” เหมาะกับกรณีที่มีข้อมูลหลุดความสัมพันธ์หรือคุณภาพข้อมูลยังไม่สมบูรณ์

_เหมาะกับ:_ table-iteration-no-blank

### คำนวณยอดรวมโดยไม่รวมแถวว่าง

ใช้ ALLNOBLANKROW ภายใน CALCULATE เพื่อลบตัวกรองทั้งหมด แต่ไม่ดึงแถวว่างมาร่วมในการคำนวณ

_เหมาะกับ:_ grand-total-no-blank

### ตัดผลกระทบจากแถวข้อมูลที่หลุดความสัมพันธ์

เมื่อมีข้อมูลในตารางข้อเท็จจริงที่ไม่มีคู่ในตารางมิติ ระบบจะสร้างแถวว่างขึ้นมาอัตโนมัติ สามารถใช้ ALLNOBLANKROW เพื่อตัดออกชั่วคราว

_เหมาะกับ:_ data-quality-fix

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ยอดรวมทั้งหมดแบบไม่รวมแถวว่าง

```excel
All Sales No Blank = 
CALCULATE(
    SUM(Sales[Amount]),
    ALLNOBLANKROW(Sales)
)
```

**ผลลัพธ์:** `ยอดขายรวมทั้งหมด (ไม่รวมแถวว่าง)`

ALLNOBLANKROW(Sales) ลบตัวกรองทั้งหมดเหมือน ALL แต่ตัดแถวว่างออก เหมาะกับกรณีมีข้อมูลที่อ้างอิงรหัสสินค้า/ลูกค้าที่ไม่พบในตารางมิติ ทำให้เกิดแถวว่างขึ้นมา

### 2. ตัวอย่างที่ 2: % สัดส่วนแบบไม่รวมแถวว่าง

```excel
% Excluding Blank = 
DIVIDE(
    [Sales Amount],
    CALCULATE(
        [Sales Amount],
        ALLNOBLANKROW(Product[Category])
    )
)
```

**ผลลัพธ์:** `% ยอดขายไม่รวมสินค้าที่ไม่มี Category`

ตัวหารใช้ ALLNOBLANKROW เพื่อหายอดรวมทุก Category แต่ไม่รวมสินค้าที่ Category เป็นค่าว่าง

### 3. ตัวอย่างที่ 3: นับจำนวนค่าที่มีอยู่จริง (ตัดแถวว่าง)

```excel
Products With Category = 
COUNTROWS(
    ALLNOBLANKROW(Product[Category])
)
```

**ผลลัพธ์:** `จำนวนสินค้าที่มี Category (ไม่นับที่เป็นค่าว่าง)`

ALLNOBLANKROW(Product[Category]) คืนตารางที่มีทุก Category แต่ไม่รวมค่าว่าง COUNTROWS นับจำนวน

### 4. ตัวอย่างที่ 4: เปรียบเทียบ ALL vs ALLNOBLANKROW

```excel
-- ALL รวม Blank
ALL Total = 
CALCULATE(
    [Sales Amount],
    ALL(Product)
)

-- ALLNOBLANKROW ไม่รวม Blank
No Blank Total = 
CALCULATE(
    [Sales Amount],
    ALLNOBLANKROW(Product)
)
```

**ผลลัพธ์:** `ความแตกต่างระหว่าง ALL และ ALLNOBLANKROW`

ALL อาจรวมแถวว่าง (ข้อมูลที่หลุดความสัมพันธ์) ส่วน ALLNOBLANKROW จะตัดออก ความแตกต่างของผลลัพธ์ช่วยให้เห็นผลกระทบจากข้อมูลที่หลุดความสัมพันธ์ได้ชัดขึ้น

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

⚠️ **แก้ที่ต้นทางดีที่สุด**: ฟังก์ชันนี้ช่วย “ตัดแถวว่าง” ออกเพื่อให้คำนวณได้ถูกขึ้น แต่สาเหตุจริงมักมาจากข้อมูลต้นทางไม่สะอาดหรือความสัมพันธ์ไม่สมบูรณ์ ดังนั้นควรแก้ที่การทำความสะอาดข้อมูลและออกแบบความสัมพันธ์ให้ถูกต้อง

💡 **ใช้เป็นตัวชี้วัดปัญหา**: ลองคำนวณด้วย ALL เทียบกับ ALLNOBLANKROW แล้วดูความแตกต่างของผลลัพธ์ ความต่างนั้นมักสะท้อนจำนวน/ผลกระทบของแถวที่หลุดความสัมพันธ์

🔍 **ข้อควรระวัง**: ถ้าใช้กับตารางข้อเท็จจริง อาจกระทบตารางมิติที่เชื่อมกันผ่านความสัมพันธ์ได้เหมือน ALL จึงควรระบุคอลัมน์ที่ต้องการให้ชัดเจนเมื่อเป็นไปได้

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

**Q: แถวว่างเกิดจากอะไร?**

มักเกิดจากข้อมูลในตารางข้อเท็จจริงที่อ้างอิงรหัส (คีย์) ไปยังตารางมิติ แต่ไม่พบรหัสดังกล่าวในตารางมิติ ระบบจึงสร้างแถวว่างขึ้นมาอัตโนมัติเพื่อรองรับการคำนวณ

**Q: พฤติกรรมต่างกันอย่างไรระหว่างใช้เป็นตาราง กับใช้ใน CALCULATE?**

เมื่อนำไปใช้เป็นนิพจน์ตาราง (เช่น ใน FILTER, COUNTROWS) ALLNOBLANKROW จะคืนค่าตารางที่มีทุกแถว “ยกเว้นแถวว่าง” แต่เมื่อใช้ภายใน CALCULATE จะทำหน้าที่ปรับบริบทตัวกรอง โดยลบตัวกรองและตัดแถวว่างออกก่อนคำนวณนิพจน์หลัก

**Q: ควรใช้ ALL หรือ ALLNOBLANKROW?**

ถ้าโมเดลมีข้อมูลสะอาดและความสัมพันธ์สมบูรณ์ (ไม่เกิดแถวว่าง) ใช้ ALL ได้เลย แต่ถ้ามีแถวว่างปนอยู่ แนะนำใช้ ALLNOBLANKROW เพื่อกันผลกระทบชั่วคราว อย่างไรก็ตามวิธีที่ดีที่สุดคือแก้ปัญหาคุณภาพข้อมูลที่ต้นทาง

**Q: ALLNOBLANKROW ต่างจาก ALL อย่างไร?**

แนวคิดคือทำงานเหมือน ALL ทุกประการ แต่เพิ่มเงื่อนไขเพื่อตัดแถวว่างออก ทำให้ผลรวม/การนับไม่ถูกรบกวนจากข้อมูลที่หลุดความสัมพันธ์

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

- all
- removefilters
- calculate
- isblank-dax
- [FILTER – กรองตารางด้วยเงื่อนไขที่ซับซ้อน (Iterator Function)](https://www.thepexcel.com/functions/dax/filter/filter-dax/)
- countrows
- divide
- fact-dax

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

- [SQLBI: Managing ALL functions in DAX](https://www.sqlbi.com/articles/managing-all-functions-in-dax-all-allselected-allnoblankrow-allexcept/) _(guide)_
- [DAX Guide: ALLNOBLANKROW](https://dax.guide/allnoblankrow/) _(documentation)_
- [Microsoft Learn: ALLNOBLANKROW](https://learn.microsoft.com/en-us/dax/allnoblankrow-function-dax) _(documentation)_

---

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