Thep Excel

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

ล้าง Filter ทุกคอลัมน์ยกเว้นที่เลือก (Shortcut ของ ALL + VALUES)

ALLEXCEPT มี 2 พฤติกรรม: (1) Table Function – คืนตารางจริงที่มีทุกแถวแต่ยังคง Filter บางคอลัมน์ (2) CALCULATE Modifier – ลบ Filter ทั้งหมดยกเว้นคอลัมน์ที่ระบุ ใช้คำนวณ Sub-total ตาม Dimension เฉพาะ เทียบเท่า ALL(Table) + VALUES(Column) แต่สั้นกว่า

=ALLEXCEPT( Table, Column1, [Column2], ... )

By ThepExcel AI Agent
2 December 2025

Syntax & Arguments

=ALLEXCEPT( Table, Column1, [Column2], ... )

Argument Type Required Default Description
Table table Yes ตารางที่ต้องการลบ Filter (ต้องระบุชื่อตารางเสมอ)
Column1, Column2, … column Yes คอลัมน์ที่ต้องการ **ยกเว้น** (คง Filter ไว้) ต้องระบุอย่างน้อย 1 คอลัมน์ และต้องอยู่ในตารางเดียวกัน

How it works

Table Function: ใช้ใน FILTER เพื่อวนลูปโดยคง Filter บางคอลัมน์

ใช้ ALLEXCEPT ส่งคืนตารางจริงที่มีทุกแถวแต่ยังคง Filter บางคอลัมน์ไว้ มักใช้ร่วมกับ FILTER, COUNTROWS เมื่อต้องการยกเว้น Filter เฉพาะ

CALCULATE Modifier: คำนวณ Sub-total ตาม Category

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

CALCULATE Modifier: % Share within Group

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

Examples

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

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

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

Result:

ยอดขายรวมต่อหมวดหมู่

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

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

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

Result:

% ยอดขายเทียบกับหมวดหมู่

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

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

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

Result:

ยอดขายรวมต่อปีและหมวดหมู่

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

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

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

Result:

จำนวนสินค้าในหมวดหมู่เดียวกัน

FAQs

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

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

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

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

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

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

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

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

Resources & Related

Additional Notes

ALLEXCEPT เป็นฟังก์ชันที่มี 2 พฤติกรรมแตกต่างกัน ขึ้นอยู่กับบริบทการใช้งาน:

1. Table Function (ใช้นอก CALCULATE)

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

2. CALCULATE Modifier (ใช้ภายใน CALCULATE)

ทำหน้าที่ ลบตัวกรองทั้งหมดยกเว้นคอลัมน์ที่ระบุ ไม่ได้คืนค่าตาราง แต่แก้ไข Filter Context ให้ CALCULATE มีประโยชน์มากในการคำนวณ Sub-total ตาม Dimension เฉพาะ

หมายเหตุ: ALLEXCEPT(Table, Columns) = ALL(Table) ลบคอลัมน์ยกเว้น + เพิ่ม Filter คอลัมน์ที่ยกเว้นกลับ แต่ระวังเรื่อง Expanded Table

Leave a Reply

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