Thep Excel

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

เหมือน ALL แต่ตัด Blank Row ออก (แก้ปัญหา Data Quality)

ALLNOBLANKROW มี 2 พฤติกรรม: (1) Table Function – คืนตารางจริงที่มีทุกแถวแต่ตัด Blank Row ออก (2) CALCULATE Modifier – ลบ Filter ทั้งหมดและตัด Blank Row เหมาะใช้เมื่อมี Data Quality Issues ในความสัมพันธ์ เทียบเท่า ALL แต่เพิ่มเงื่อนไข ISBLANK = FALSE

=ALLNOBLANKROW( [Table | Column1, Column2, ...] )

By ThepExcel AI Agent
2 December 2025

Syntax & Arguments

=ALLNOBLANKROW( [Table | Column1, Column2, ...] )

Argument Type Required Default Description
Table หรือ Column table/column Yes ตารางหรือคอลัมน์ที่ต้องการล้างตัวกรองและดึงข้อมูลทั้งหมดออกมา โดยตัด Blank Row ออก

How it works

Table Function: ใช้ใน FILTER เพื่อวนลูปโดยไม่รวม Blank Row

ใช้ ALLNOBLANKROW ส่งคืนตารางจริงที่มีทุกแถวยกเว้น Blank Row เหมาะกับกรณีมี Data Quality Issues

CALCULATE Modifier: คำนวณ Grand Total โดยไม่รวม Blank

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

แก้ปัญหา Orphan Records

เมื่อมี Fact Records ที่ไม่มี Dimension Record คู่กัน จะเกิด Blank Row ใช้ ALLNOBLANKROW เพื่อตัดออก

Examples

ตัวอย่างที่ 1: CALCULATE Modifier – Grand Total ไม่รวม Blank

ALLNOBLANKROW(Sales) ลบ Filter ทั้งหมดเหมือน ALL แต่ตัด Blank Row ออก เหมาะกับกรณีมี Sales Records ที่ไม่มี Product/Customer ที่ตรงกัน
DAX Formula:

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

Result:

ยอดขายรวมทั้งหมด (ไม่รวม Blank Row)

ตัวอย่างที่ 2: CALCULATE Modifier – % ไม่รวม Blank

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

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

Result:

% ยอดขายไม่รวมสินค้าที่ไม่มี Category

ตัวอย่างที่ 3: Table Function – นับสินค้าที่มี Category

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

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

Result:

จำนวนสินค้าที่มี Category (ไม่นับที่เป็นค่าว่าง)

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

ALL จะรวม Blank Row (สินค้าที่ไม่มีข้อมูลครบ) ส่วน ALLNOBLANKROW จะตัดออก ความแตกต่างของผลลัพธ์บอกว่ามี Data Quality Issues เท่าไร
DAX Formula:

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

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

Result:

ความแตกต่างระหว่าง ALL และ ALLNOBLANKROW

FAQs

Blank Row เกิดจากอะไร?

เกิดจาก Fact Records ที่มี Foreign Key ที่ไม่ตรงกับ Primary Key ใน Dimension Table เช่น Sales Record ที่มี ProductKey = 999 แต่ไม่มี Product ที่ ProductKey = 999 DAX จะสร้าง Blank Row ให้อัตโนมัติ

พฤติกรรมของ ALLNOBLANKROW แตกต่างกันอย่างไรระหว่าง Table Function และ CALCULATE Modifier?

เมื่อใช้นอก CALCULATE (เช่น ใน FILTER, COUNTROWS) ALLNOBLANKROW จะคืนตารางจริงที่มีทุกแถวยกเว้น Blank Row แต่เมื่อใช้ใน CALCULATE มันจะไม่คืนตาราง แต่ทำหน้าที่ลบ Filter ทั้งหมดและตัด Blank Row

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

ถ้า Data Model มี Data Quality ดี (ไม่มี Orphan Records) ใช้ ALL ได้เลย ถ้ามีปัญหา Blank Row แนะนำใช้ ALLNOBLANKROW แต่วิธีที่ดีที่สุดคือแก้ไข Data Quality ที่ต้นทาง

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

ALLNOBLANKROW = ALL + ISBLANK = FALSE ทำงานเหมือน ALL ทุกประการแต่เพิ่มเงื่อนไขตัด Blank Row ออก

Resources & Related

Additional Notes

ALLNOBLANKROW เป็นฟังก์ชันที่มี 2 พฤติกรรมแตกต่างกัน ขึ้นอยู่กับบริบทการใช้งาน:

1. Table Function (ใช้นอก CALCULATE)

คืนค่า ตารางจริง ที่มีแถวทั้งหมดโดยไม่สนตัวกรอง แต่ตัดแถวว่าง (Blank Row) ออก Blank Row เกิดจากความสัมพันธ์ที่ไม่สมบูรณ์ระหว่างตาราง มักใช้ใน FILTER, COUNTROWS

2. CALCULATE Modifier (ใช้ภายใน CALCULATE)

ทำหน้าที่ ลบตัวกรองทั้งหมดและตัด Blank Row ไม่ได้คืนค่าตาราง แต่แก้ไข Filter Context ให้ CALCULATE มีประโยชน์เมื่อต้องการ Grand Total โดยไม่รวม Blank Row

หมายเหตุ: ALLNOBLANKROW เหมือน ALL แต่เพิ่มเงื่อนไข ISBLANK = FALSE เข้าไป ใช้เมื่อมีปัญหา Data Quality ในความสัมพันธ์

Leave a Reply

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