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 – ความแตกต่างในการใช้งาน
VAR AllProducts = CALCULATE(COUNTROWS('Product'), ALL('Product')) VAR AllCrossProductCount = CALCULATE(COUNTROWS('Product'), ALLCROSSFILTERED('Product')) RETURN…
ตัวอย่างนี้แสดงว่า ALLCROSSFILTERED ใช้ใน CALCULATE เท่านั้น ไม่สามารถใช้เดี่ยวๆ ถ้า ALL กับ ALLCROSSFILTERED ให้ผลต่างกัน แสดงว่าโมเดลมี cross-filtering
DAX Formula:

VAR AllProducts = CALCULATE(COUNTROWS('Product'), ALL('Product'))
VAR AllCrossProductCount = CALCULATE(COUNTROWS('Product'), ALLCROSSFILTERED('Product'))
RETURN
IF(
    AllProducts <> AllCrossProductCount,
    "Model uses Many-to-Many or Cross-filtering",
    "Simple relationship, both give same result"
)

Result:

ข้อความบอกว่าใช้ Many-to-Many หรือ Cross-filtering หรือไม่

FAQs

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

ALL เป็นได้ทั้ง Table Function (คืนค่าตาราง) และ Modifier ส่วน ALLCROSSFILTERED เป็นได้แค่ Modifier เท่านั้นใน CALCULATE ในแง่ filter context ทั้งคู่ล้าง filter แต่ ALLCROSSFILTERED ล้างเพิ่มเติม – มันลบตัวกรองที่ผ่านมาจาก weak relationships หรือ bidirectional filter ซึ่ง ALL ไม่ทำ ยกตัวอย่าง ALL อาจให้ 135 products แต่ ALLCROSSFILTERED อาจให้ 2,517 ทั้งหมด

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

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

ALLCROSSFILTERED vs REMOVEFILTERS ต่างกันไหม?

REMOVEFILTERS ล้าง filter จากคอลัมน์เฉพาะ ส่วน ALLCROSSFILTERED ล้างทั้งตารางรวมถึง cross-filter จากความสัมพันธ์ อีกอย่าง REMOVEFILTERS ใช้กับคอลัมน์ได้แต่ ALLCROSSFILTERED เฉพาะตาราง

Resources & Related

Additional Notes

ALLCROSSFILTERED เป็นฟังก์ชันที่ใช้ล้างตัวกรองทั้งหมดออกจากตารางที่ระบุ รวมถึงตัวกรองที่ไหลเข้ามาจากตารางอื่นผ่าน Weak Relationships หรือ Bidirectional Cross-filtering นี่คือจุดต่างสำคัญกับ ALL ที่เพิ่งล้างตัวกรองปกติในตารางนั้น

ที่เจ๋งคือเมื่อคุณมี Many-to-Many Relationship หรือ Bidirectional Filter โมเดลจะ propagate filters ไปตามลูกศรแบบ cross-filtering ปัญหามักเกิดตอนคำนวณ Grand Total หรือต้องการข้อมูลทั้งหมด ยกตัวอย่าง ถ้ากรองโดย ColorGroup ผ่าน M2M relationship ALL จะให้ 135 products แต่ ALLCROSSFILTERED จะให้ 2,517 products ทั้งหมดเลย

ส่วนตัวผมใช้ ALLCROSSFILTERED บ่อยมากในโมเดลซับซ้อน ถ้าคำนวณ Grand Total ผิดเพี้ยนหรือข้อมูลไม่ครอบคลุม ลองใช้อันนี้ดูครับ ไม่ต้องสงสัย 😎

Leave a Reply

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