Thep Excel

ALLCROSSFILTERED – ล้างตัวกรองทั้งหมดรวมถึง Cross-filter

ALLCROSSFILTERED ใช้ล้างตัวกรองทั้งหมดออกจากตารางที่ระบุ รวมถึงตัวกรองที่ส่งผ่านมาจากตารางอื่น (Cross-filter) ใช้ได้เฉพาะเป็น Modifier ใน CALCULATE/CALCULATETABLE เท่านั้น ไม่สามารถคืนค่าเป็นตารางได้

=ALLCROSSFILTERED(table)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
4/10

Difficulty
6/10

Usefulness
4/10

Syntax & Arguments

=ALLCROSSFILTERED(table)

Argument Type Required Default Description
table table Yes ตารางที่ต้องการล้างตัวกรอง

How it works

การคำนวณ Grand Total ที่แน่นอน

เมื่อต้องการหายอดรวมทั้งหมดเพื่อคำนวณ Ratio โดยไม่ต้องการให้ Slicer ใดๆ (แม้แต่จากตารางที่สัมพันธ์กันแบบ Many-to-Many หรือ Bi-directional) ส่งผลกระทบ

Examples

ตัวอย่างที่ 1: คำนวณ % สัดส่วนเทียบกับยอดรวม (ตัดผล Cross-filter จาก Product)
Pct Sales vs All Products = DIVIDE( SUM(Sales[Sales Amount]), CALCULATE( SUM(Sales[Sales Amount]), ALLCROSSFILTERED('Product') ) )
ตัวหารใช้ ALLCROSSFILTERED('Product') เพื่อล้างตัวกรองที่กระทำต่อ Product รวมถึงตัวกรองที่ไหลมาจากความสัมพันธ์ ทำให้ได้ยอดรวม “ทุกสินค้า” อย่างสม่ำเสมอแม้โมเดลมีความสัมพันธ์ซับซ้อน
DAX Formula:

Pct Sales vs All Products =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        ALLCROSSFILTERED('Product')
    )
)

Result:

เปอร์เซ็นต์ยอดขายของบริบทปัจจุบันเทียบกับยอดรวมทุกสินค้า (ยังคงตัวกรองอื่น เช่น ปี/ลูกค้า ไว้)

ตัวอย่างที่ 2: ล้างตัวกรองจากตาราง Dimension (กันการกรองข้ามตาราง)
Sales No Product Filter = CALCULATE( SUM(Sales[Sales Amount]), ALLCROSSFILTERED('Product') )
ALLCROSSFILTERED('Product') จะลบตัวกรองที่กระทำต่อ Product ทั้งหมด รวมถึงตัวกรองที่เกิดจากการไหลผ่าน Relationship ทำให้ Product ไม่สามารถลดทอนแถวของ Sales ในการคำนวณนี้ได้
DAX Formula:

Sales No Product Filter =
CALCULATE(
    SUM(Sales[Sales Amount]),
    ALLCROSSFILTERED('Product')
)

Result:

ยอดขายรวมที่ไม่ถูกกรองด้วย Product (เช่น Color/Category) แต่ยังเคารพตัวกรองอื่นที่ไม่ได้มาจาก Product

ตัวอย่างที่ 3: เปรียบเทียบกับ ALL
-- ❌ Incorrect Usage: -- Count Rows = COUNTROWS(ALLCROSSFILTERED('Product')) -- ✅ Correct Usage: Count Rows Valid = VAR Result = CALCULATE(COUNTROWS('Product'),…
ALLCROSSFILTERED ใช้เดี่ยวๆ ไม่ได้ ต้องใส่ใน CALCULATE ส่วน ALL สามารถใช้เดี่ยวๆ เป็น Table Function ได้
DAX Formula:

-- ❌ Incorrect Usage:
-- Count Rows = COUNTROWS(ALLCROSSFILTERED('Product'))

-- ✅ Correct Usage:
Count Rows Valid = 
VAR Result = CALCULATE(COUNTROWS('Product'), ALLCROSSFILTERED('Product'))
RETURN Result

Result:

จำนวนแถวทั้งหมดของตาราง Product

FAQs

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

ALL เป็นได้ทั้ง Table Function (คืนค่าตาราง) และ Modifier ส่วน ALLCROSSFILTERED เป็นได้แค่ Modifier เท่านั้น ในแง่การกรอง ทั้งคู่ทำงานคล้ายกันคือล้าง filter แต่ ALLCROSSFILTERED สื่อความหมายชัดเจนเรื่องการล้าง Cross-filter ในโมเดลที่ซับซ้อน

ใช้กับคอลัมน์เดียวได้ไหม?

ไม่ได้ ALLCROSSFILTERED รับ argument เป็นตารางเท่านั้น หากต้องการล้างเฉพาะคอลัมน์ ให้ใช้ ALL(Column)

Resources & Related

Additional Notes

ALLCROSSFILTERED เป็นฟังก์ชันที่ใช้สำหรับล้างตัวกรอง (Clear Filters) ทั้งหมดที่กระทำต่อตารางที่ระบุ ไม่ว่าจะเป็นตัวกรองที่เกิดจากคอลัมน์ในตารางนั้นโดยตรง หรือตัวกรองที่ถูกส่งมาจากตารางอื่นผ่านความสัมพันธ์ (Cross-filtering)

ข้อแตกต่างสำคัญคือ ALLCROSSFILTERED เป็นได้แค่ Modifier (ตัวปรับแต่ง) ภายในฟังก์ชัน CALCULATE หรือ CALCULATETABLE เท่านั้น ไม่สามารถใช้เป็นฟังก์ชันเดี่ยวๆ เพื่อคืนค่าตารางได้ (ต่างจาก ALL ที่คืนค่าตารางได้)

Leave a Reply

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