---
title: ALLEXCEPT – ล้างตัวกรองทั้งหมดยกเว้นคอลัมน์ที่ระบุ
url: https://www.thepexcel.com/functions/dax/filter/allexcept-dax/
type: function-explainer
program: DAX
syntax: "ALLEXCEPT(<table>, <column1>)"
date: 2025-12-13
updated: 2025-12-17
scores:
  popularity: 7
  difficulty: 6
  usefulness: 8
---

# ALLEXCEPT – ล้างตัวกรองทั้งหมดยกเว้นคอลัมน์ที่ระบุ

> ล้างตัวกรองทั้งหมด ยกเว้นคอลัมน์ที่ระบุไว้

## คำอธิบาย

ALLEXCEPT ใช้สำหรับ “ล้างตัวกรองเกือบทั้งหมด” โดยคงตัวกรองไว้เฉพาะคอลัมน์ที่ระบุ เหมาะกับการคำนวณ Sub-total/สัดส่วนภายในกลุ่ม เช่น ยอดขายต่อหมวดหมู่ โดยไม่สนตัวกรองอื่น ๆ แนวคิดหลักคือ ลบตัวกรองของตาราง แล้วคงตัวกรองของคอลัมน์ที่เลือกไว้

## Syntax

```excel
ALLEXCEPT(&lt;table&gt;, &lt;column1&gt;)
```

**Variant**

```excel
ALLEXCEPT(&lt;table&gt;, &lt;column1&gt;)
```

ล้างตัวกรองของตารางทั้งหมด แล้วคงตัวกรองไว้เฉพาะคอลัมน์ที่ระบุ 1 คอลัมน์

**Variant**

```excel
ALLEXCEPT(&lt;table&gt;, &lt;column1&gt;, &lt;column2&gt;, ...)
```

คงตัวกรองไว้หลายคอลัมน์ (ต้องเป็นคอลัมน์ในตารางเดียวกัน) เหมาะกับการหายอดรวมภายในกลุ่มย่อยหลายมิติ

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| table | Yes | table |  | ตารางที่ต้องการล้างตัวกรอง (เช่น Sales, Product) |
| column1 | Yes | column |  | คอลัมน์แรกที่ต้องการ “ยกเว้น” ไม่ให้ถูกล้างตัวกรอง (คง Filter ไว้) ต้องอยู่ในตารางเดียวกับ table |
| column2 | No | column | ไม่มีคอลัมน์เพิ่มเติม | คอลัมน์เพิ่มเติมที่ต้องการคงตัวกรองไว้ สามารถใส่ได้หลายคอลัมน์ |

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

### ใช้เป็น Table Expression เพื่อวนลูป (คงตัวกรองบางคอลัมน์)

ใช้ ALLEXCEPT ส่งคืนตารางที่ยังคงตัวกรองของคอลัมน์ที่ระบุไว้ แต่ล้างตัวกรองอื่น ๆ ออก เหมาะกับการทำงานร่วมกับ FILTER และ COUNTROWS เมื่อต้องการยึด “กลุ่ม” บางมิติไว้

_เหมาะกับ:_ table-iteration-except

### ใช้ใน CALCULATE เพื่อคำนวณยอดรวมภายในกลุ่ม (Sub-total)

ใช้ ALLEXCEPT ภายใน CALCULATE เพื่อลบ Filter ทั้งหมดยกเว้น Category หายอดรวมต่อ Category โดยไม่สน Filter อื่นๆ

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

### คำนวณ % ภายในกลุ่มเดียวกัน

คำนวณสัดส่วน % ภายในกลุ่ม เช่น % ยอดขายของแต่ละสินค้าเทียบกับหมวดหมู่ของมันเอง

_เหมาะกับ:_ percentage-within-group

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: CALCULATE Modifier - Sub-total ต่อหมวดหมู่

```excel
Category Total = 
CALCULATE(
    SUM(Sales[Amount]),
    ALLEXCEPT(Sales, Product[Category])
)
```

**ผลลัพธ์:** `ยอดขายรวมต่อหมวดหมู่`

ALLEXCEPT(Sales, Product[Category]) ลบ Filter ทั้งหมดจาก Sales ยกเว้น Product[Category] ทำให้ได้ยอดรวมของทั้งหมวดหมู่ แม้จะมี Filter สินค้า/ปี/ภูมิภาคอื่นๆ

### 2. ตัวอย่างที่ 2: CALCULATE Modifier - % Share ใน Category

```excel
% of Category = 
DIVIDE(
    [Sales Amount],
    CALCULATE(
        [Sales Amount],
        ALLEXCEPT(Sales, Product[Category])
    )
)
```

**ผลลัพธ์:** `% ยอดขายเทียบกับหมวดหมู่`

ตัวหารใช้ ALLEXCEPT เพื่อหายอดรวมของหมวดหมู่เดียวกัน แต่ละสินค้าจะแสดง % ว่าขายได้เท่าไรเทียบกับหมวดหมู่ตัวเอง

### 3. ตัวอย่างที่ 3: CALCULATE Modifier - ยกเว้นหลายคอลัมน์

```excel
Sales By Year Category = 
CALCULATE(
    SUM(Sales[Amount]),
    ALLEXCEPT(
        Sales,
        'Date'[Year],
        Product[Category]
    )
)
```

**ผลลัพธ์:** `ยอดขายรวมต่อปีและหมวดหมู่`

ALLEXCEPT ยกเว้นทั้ง Year และ Category ลบ Filter อื่นๆ ทั้งหมด (สินค้า, เดือน, ภูมิภาค) ได้ Sub-total ตาม 2 มิติ

### 4. ตัวอย่างที่ 4: Table Function - นับสินค้าในหมวดหมู่

```excel
Products In Category = 
COUNTROWS(
    ALLEXCEPT(
        Product,
        Product[Category]
    )
)
```

**ผลลัพธ์:** `จำนวนสินค้าในหมวดหมู่เดียวกัน`

ALLEXCEPT(Product, Product[Category]) คืนตารางสินค้าทั้งหมดในหมวดหมู่เดียวกันกับแถวปัจจุบัน COUNTROWS นับจำนวน

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

⚠️ **Expanded Table Caveat**: ALLEXCEPT(FactTable, DimColumn) จะลบ Filter จากทั้ง Fact Table และ Dimension Tables ที่เชื่อมทั้งหมด แล้วจึงเพิ่ม Filter ของคอลัมน์ที่ยกเว้นกลับ อาจได้ผลลัพธ์ไม่ตรงความคาดหวังถ้าไม่เข้าใจ Expanded Table

💡 **Shortcut Syntax**: ALLEXCEPT เป็น Shortcut ของ ALL(Table) + VALUES(Columns) ช่วยให้โค้ดสั้นลง โดยเฉพาะเมื่อยกเว้นคอลัมน์น้อยๆ

🔍 **Best Practice**: ถ้ามีคอลัมน์ในตารางเยอะ (เช่น 20 คอลัมน์) และต้องการลบแค่ 2-3 คอลัมน์ ให้ใช้ REMOVEFILTERS แทน ALLEXCEPT เพราะชัดเจนกว่า

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

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

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

**Q: ALLEXCEPT เทียบเท่ากับอะไร?**

ALLEXCEPT(Table, Col1, Col2) เทียบเท่ากับ ALL(Table) + VALUES(Col1) + VALUES(Col2) แต่สั้นกว่าและอ่านง่ายกว่า เป็น Shortcut ที่นิยมใช้มาก

**Q: ทำไมต้องระวังเรื่อง Expanded Table?**

ALLEXCEPT(Sales, Product[Category]) จะลบ Filter จากทั้ง Sales และ Dimension Tables ที่เชื่อมด้วย Relationship (Date, Customer, Store) แต่จะเพิ่ม Filter Product[Category] กลับ ถ้าต้องการควบคุมแม่นยำกว่า แนะนำใช้ REMOVEFILTERS แทน

**Q: ควรใช้ ALLEXCEPT หรือ REMOVEFILTERS?**

ALLEXCEPT สั้นกว่าเมื่อต้องการยกเว้นคอลัมน์น้อยๆ แต่ REMOVEFILTERS ชัดเจนกว่าเมื่อต้องการลบคอลัมน์เฉพาะ ขึ้นอยู่กับกรณี ถ้ามีคอลัมน์เยอะแนะนำใช้ REMOVEFILTERS

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

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

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

- [SQLBI: Managing ALL functions in DAX](https://www.sqlbi.com/articles/managing-all-functions-in-dax-all-allselected-allnoblankrow-allexcept/) _(guide)_
- [DAX Guide: ALLEXCEPT](https://dax.guide/allexcept/) _(documentation)_
- [Microsoft Learn: ALLEXCEPT](https://learn.microsoft.com/en-us/dax/allexcept-function-dax) _(documentation)_

---

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