Thep Excel

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

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

=ALLNOBLANKROW(<table_or_column>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
4/10

Difficulty
5/10

Usefulness
4/10

Syntax & Arguments

=ALLNOBLANKROW(<table_or_column>)

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

How it works

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

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

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

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

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

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

Examples

ตัวอย่างที่ 1: ยอดรวมทั้งหมดแบบไม่รวมแถวว่าง
All Sales No Blank = CALCULATE( SUM(Sales[Amount]), ALLNOBLANKROW(Sales) )
ALLNOBLANKROW(Sales) ลบตัวกรองทั้งหมดเหมือน ALL แต่ตัดแถวว่างออก เหมาะกับกรณีมีข้อมูลที่อ้างอิงรหัสสินค้า/ลูกค้าที่ไม่พบในตารางมิติ ทำให้เกิดแถวว่างขึ้นมา
DAX Formula:

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

Result:

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

ตัวอย่างที่ 2: % สัดส่วนแบบไม่รวมแถวว่าง
% Excluding Blank = DIVIDE( [Sales Amount], CALCULATE( [Sales Amount], ALLNOBLANKROW(Product[Category]) ) )
ตัวหารใช้ ALLNOBLANKROW เพื่อหายอดรวมทุก Category แต่ไม่รวมสินค้าที่ Category เป็นค่าว่าง
DAX Formula:

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

Result:

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

ตัวอย่างที่ 3: นับจำนวนค่าที่มีอยู่จริง (ตัดแถวว่าง)
Products With Category = COUNTROWS( ALLNOBLANKROW(Product[Category]) )
ALLNOBLANKROW(Product[Category]) คืนตารางที่มีทุก Category แต่ไม่รวมค่าว่าง COUNTROWS นับจำนวน
DAX Formula:

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

Result:

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

ตัวอย่างที่ 4: เปรียบเทียบ ALL vs ALLNOBLANKROW
-- ALL รวม Blank ALL Total = CALCULATE( [Sales Amount], ALL(Product) ) -- ALLNOBLANKROW ไม่รวม Blank No Blank Total = CALCULATE( [Sales Amount], ALLNOBLANKROW(P…
ALL อาจรวมแถวว่าง (ข้อมูลที่หลุดความสัมพันธ์) ส่วน ALLNOBLANKROW จะตัดออก ความแตกต่างของผลลัพธ์ช่วยให้เห็นผลกระทบจากข้อมูลที่หลุดความสัมพันธ์ได้ชัดขึ้น
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

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

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

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

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

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

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

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

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

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 *