---
title: ALLCROSSFILTERED – ล้างตัวกรองทั้งหมดรวมถึง Cross-filter
url: https://www.thepexcel.com/functions/dax/filter/allcrossfiltered-dax/
type: function-explainer
program: DAX
syntax: "ALLCROSSFILTERED(<table>)"
date: 2025-12-13
updated: 2025-12-26
scores:
  popularity: 4
  difficulty: 6
  usefulness: 4
---

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

> ALLCROSSFILTERED ใช้ล้างตัวกรองทั้งหมดออกจากตารางที่ระบุ รวมถึงตัวกรองที่ส่งผ่านมาจากตารางอื่น (Cros

## คำอธิบาย

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

## Syntax

```excel
ALLCROSSFILTERED(&lt;table&gt;)
```

**Variant**

```excel
ALLCROSSFILTERED(table)
```

ล้างตัวกรองทั้งหมด รวมถึง Cross-filter ออกจากตารางที่ระบุ

## Arguments

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

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

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

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

_เหมาะกับ:_ ratio-calculation

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: คำนวณ % สัดส่วนเทียบกับยอดรวม (ตัดผล Cross-filter จาก Product)

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

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

ตัวหารใช้ ALLCROSSFILTERED('Product') เพื่อล้างตัวกรองที่กระทำต่อ Product รวมถึงตัวกรองที่ไหลมาจากความสัมพันธ์ ทำให้ได้ยอดรวม "ทุกสินค้า" อย่างสม่ำเสมอแม้โมเดลมีความสัมพันธ์ซับซ้อน

### 2. ตัวอย่างที่ 2: ล้างตัวกรองจากตาราง Dimension (กันการกรองข้ามตาราง)

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

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

ALLCROSSFILTERED('Product') จะลบตัวกรองที่กระทำต่อ Product ทั้งหมด รวมถึงตัวกรองที่เกิดจากการไหลผ่าน Relationship ทำให้ Product ไม่สามารถลดทอนแถวของ Sales ในการคำนวณนี้ได้

### 3. ตัวอย่างที่ 3: เปรียบเทียบกับ ALL - ความแตกต่างในการใช้งาน

```excel
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"
)
```

**ผลลัพธ์:** `ข้อความบอกว่าใช้ Many-to-Many หรือ Cross-filtering หรือไม่`

ตัวอย่างนี้แสดงว่า ALLCROSSFILTERED ใช้ใน CALCULATE เท่านั้น ไม่สามารถใช้เดี่ยวๆ ถ้า ALL กับ ALLCROSSFILTERED ให้ผลต่างกัน แสดงว่าโมเดลมี cross-filtering

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

- ผมแนะนำให้เริ่มใช้ ALL ก่อนถ้าง่ายพอ เมื่อ Grand Total หรือ Total ผิดเพี้ยนจากการกรองข้ามตาราง ค่อยเปลี่ยนเป็น ALLCROSSFILTERED

- ระวัง context transition เวลาใช้ ALLCROSSFILTERED ใน row context (เช่น Calculated Column) มันจะแปลง row context เป็น filter context ซึ่งอาจเหมาะหรือไม่เหมาะขึ้นอยู่กับต้องการอะไร

- ส่วนตัวผมมักเจอโจทย์ Many-to-Many ที่ ALL ไม่ได้ผลประมาณ 8/10 ครั้ง ALLCROSSFILTERED จะแก้ได้ ถ้าโมเดลสมควรใช้ ALLCROSSFILTERED ตั้งแต่แรกยาวไปหน่อย

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

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

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

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

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

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

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

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

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

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

- [Microsoft Learn: ALLCROSSFILTERED](https://learn.microsoft.com/en-us/dax/allcrossfiltered-function-dax) _(official)_
- [DAX Guide: ALLCROSSFILTERED](https://dax.guide/allcrossfiltered/) _(guide)_

---

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