Thep Excel

REMOVEFILTERSลบตัวกรองออกจากตาราง/คอลัมน์

REMOVEFILTERS ลบ Filter ออกจากตารางหรือคอลัมน์ที่ระบุ ใช้ได้ใน CALCULATE เท่านั้น เทียบเท่า ALL เมื่อใช้เป็น CALCULATE Modifier แต่ชัดเจนและอ่านโค้ดง่ายกว่า แนะนำใช้แทน ALL เพราะสื่อความหมายได้ดีกว่า

fx
=REMOVEFILTERS([table_or_column], [column], [column])

ความนิยม7/10
ความยาก5/10
ประโยชน์7/10

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
[table_or_column]ไม่บังคับ Table/Column ลบตัวกรองทั้งหมด ตารางหรือคอลัมน์ที่ต้องการลบตัวกรอง หากไม่ระบุ จะลบตัวกรองทั้งหมด
[column]ไม่บังคับ Column คอลัมน์เพิ่มเติมจากตารางเดียวกัน (ทำได้หลายคอลัมน์) ใช้เมื่อต้องการลบ Filter จากคอลัมน์เฉพาะ

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

REMOVEFILTERS เป็นฟังก์ชันที่ทำหน้าที่ลบตัวกรอง (Remove Filters) ออกจากตารางหรือคอลัมน์ที่ระบุในตัว CALCULATE

ส่วนตัวผมชอบ REMOVEFILTERS มากกว่า ALL เพราะมันบอกเจาะจงตรงๆ ว่า “ลบตัวกรอง” ไม่เหมือน ALL ที่มีความหมายซ้ำซ้อน (ยังเป็นได้ทั้ง Table Function และ Modifier) ทำให้โค้ดอ่านง่ายและ Intent ชัดเจนมากขึ้น 😎

ข้อสำคัญ: REMOVEFILTERS ใช้ได้ใน CALCULATE เท่านั้น ถ้าต้องการตารางจริง (Table Function) ต้องใช้ ALL แทน

How it works

คำนวณ % เทียบกับ Grand Total

ใช้เพื่อหาตัวหารที่เป็นยอดรวมทั้งหมด ที่ไม่ถูกกรอง

เทียบยอดขายกับค่าเฉลี่ยทั้งหมด

หาส่วนเบี่ยงเบนจากค่าเฉลี่ยที่ไม่ถูกกรอง

Examples

ยอดขายรวมทั้งหมด ไม่สนใจ Filter ใดๆGrand Total Sales = CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS() )

REMOVEFILTERS() ไม่มี Argument จะลบตัวกรองทั้งหมด ยอดขายรวมทั้ง Model ไม่ว่าผู้ใช้เลือก Filter อะไรก็ตาม

fx
Grand Total Sales =
CALCULATE(
SUM(Sales[Amount]),
REMOVEFILTERS()
)

ผลลัพธ์10,500,000 (ทั้งหมดโดยไม่สนใจ Filter ที่เลือก)
ยอดขายสำหรับสีทั้งหมด (คงตัวกรองอื่นไว้)Sales All Colors = CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS(Products[Color]) )

ลบตัวกรองเฉพาะจากคอลัมน์ Products[Color] เท่านั้น ตัวกรอง Brand และตัวกรองอื่นๆ ยังคงอยู่

fx
Sales All Colors =
CALCULATE(
SUM(Sales[Amount]),
REMOVEFILTERS(Products[Color])
)

ผลลัพธ์8,200,000 (ถ้า Brand='Samsung' ถูกเลือก)
เปอร์เซ็นต์ยอดขายเทียบกับยอดรวม (% of Grand Total)Pct of Total = VAR CurrentSales = SUM(Sales[Amount]) VAR GrandTotal = CALCULATE(SUM(Sales[Amount]), REMOVEFILTERS()) RETURN DIVIDE(CurrentSales, GrandTotal, 0)

เก็บยอดขายปัจจุบันใน CurrentSales และยอดรวมทั้งหมด (โดยลบ Filter) ใน GrandTotal แล้วหารเพื่อได้สัดส่วน

fx
Pct of Total =
VAR CurrentSales = SUM(Sales[Amount])
VAR GrandTotal = CALCULATE(SUM(Sales[Amount]), REMOVEFILTERS())
RETURN
DIVIDE(CurrentSales, GrandTotal, 0)

ผลลัพธ์0.25 (หรือ 25%)
ลบ Filter จากหลายคอลัมน์พร้อมกันSales No Brand No Color = CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS(Products[Brand], Products[Color]) )

ระบุหลายคอลัมน์ได้โดยคั่นด้วยจุลภาค ลบตัวกรองจาก Brand และ Color พร้อมกัน แต่ตัวกรอง Category ยังอยู่

fx
Sales No Brand No Color =
CALCULATE(
SUM(Sales[Amount]),
REMOVEFILTERS(Products[Brand], Products[Color])
)

ผลลัพธ์9,100,000 (ลบ Brand และ Color แต่คง Category)
ลบ Filter จากตารางทั้งหมด (Expanded Table)Sales Any Product = CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS(Products) )

ระบุชื่อตาราง Products จะลบ Filter จากทุกคอลัมน์ของตาราง และจาก Dimension Table ที่เชื่อมผ่าน Relationship

fx
Sales Any Product =
CALCULATE(
SUM(Sales[Amount]),
REMOVEFILTERS(Products)
)

ผลลัพธ์10,500,000 (ลบทั้ง Color, Brand, Category)

FAQs

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

เมื่อใช้ใน CALCULATE ทั้งสองทำงานเหมือนกันทุกประการ แต่ REMOVEFILTERS ชัดเจนกว่าในเรื่องความหมาย – มันบอกตรงๆ ว่า "ลบตัวกรอง" ไม่เหมือน ALL ที่มีความหมายซ้ำซ้อน (เป็นได้ทั้ง Table Function และ CALCULATE Modifier) เหตุนี้แนะนำใช้ REMOVEFILTERS เพราะโค้ดอ่านง่าย Intent ชัดเจน

REMOVEFILTERS ใช้เป็น Table Function ได้ไหม?+

ไม่ได้ REMOVEFILTERS ใช้ได้ใน CALCULATE เท่านั้น (CALCULATE Modifier) ถ้าต้องการตารางจริงต้องใช้ ALL เช่น SELECTCOLUMNS(ALL(Products), …) ตัวอย่าง: ALL(Products) คืนตารางค่าทั้งหมด แต่ REMOVEFILTERS() ใช้ในตัว CALCULATE เท่านั้น

มี REMOVEFILTERS เวอร์ชันที่ทำงานเหมือน ALLSELECTED ไหม?+

ไม่มี REMOVEFILTERS ทำงานเหมือน ALL (ลบตัวกรองทั้งหมด) ไม่มีฟังก์ชันชัดเจนแบบ REMOVEFILTERS ที่ทำงานเหมือน ALLSELECTED (ลบตัวกรองใน Visual แต่คง Slicer) ถ้าต้องการฟังก์ชันนั้น ต้องใช้ ALLSELECTED เท่านั้น

REMOVEFILTERS(table) กับ REMOVEFILTERS(column) ต่างกันไหม?+

REMOVEFILTERS(Products) ลบตัวกรองจากทั้งตาราง Products และ Dimension Table ที่เชื่อมผ่าน Relationship (เรียก Expanded Table) ส่วน REMOVEFILTERS(Products[Color]) ลบเฉพาะตัวกรองจากคอลัมน์ Products[Color] เท่านั้น

ต้องระวังเรื่องอะไรกับ REMOVEFILTERS?+

ระวัง Expanded Table – เมื่อ REMOVEFILTERS(FactTable) มันจะลบตัวกรองจากทั้ง Fact Table และ Dimension Tables ที่เชื่อมผ่าน Relationship แบบ many-to-one ถ้าต้องการลบเฉพาะบางคอลัมน์ ให้ระบุคอลัมน์ชัดเจน เช่น REMOVEFILTERS(Sales[ProductKey]) ส่วนตัวกรองอื่นจะคงอยู่

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ REMOVEFILTERS จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้REMOVEFILTERSFilter
Filter (9)
ALL

ALL มีพฤติกรรมแตกต่างกัน 2 แบบ: ใช้เป็น Table Expression จะคืนทุกแถวในตาราง หรือทุกค่าในคอลัมน์ โดยไม่สนใจ Filter ใดๆ เหมาะสำหรับใช้ร่วมกับ FILTER, COUNTROWS, SUMMARIZE หรือใช้เป็น CALCULATE Modifier เพื่อลบ Filter ออกจากตารางหรือคอลัมน์ที่ระบุ ทำให้สามารถคำนวณ Grand Total หรือหาเปอร์เซ็นต์เทียบกับยอดรวมได้

ALLCROSSFILTERED

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

ALLEXCEPT

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

ALLNOBLANKROW

ALLNOBLANKROW ทำงานคล้าย ALL แต่มีจุดเด่นคือ “ตัดแถวว่าง” ที่ระบบสร้างขึ้นอัตโนมัติเมื่อข้อมูลหลุดความสัมพันธ์ เช่น คีย์ในตารางข้อเท็จจริงไม่พบในตารางมิติ จึงเหมาะกับการคำนวณยอดรวม/สัดส่วนที่ไม่ต้องการให้แถวว่างเข้ามาปนผลลัพธ์ และยังใช้เป็นตัวช่วยตรวจจับปัญหาคุณภาพข้อมูลในโมเดลได้ด้วย

ALLSELECTED

ALLSELECTED เป็น DAX function ที่ลบ filter context จาก Visual (row และ column filters) แต่คง filter context จาก Slicer, Page Filter และ Report Filter ไว้ ทำให้สามารถคำนวณ Visual Total ได้ ซึ่งเป็นยอดรวมของข้อมูลที่ผู้ใช้เลือกดูในปัจจุบัน ไม่ใช่ Grand Total ทั้งหมด ฟังก์ชันนี้ทำงานผ่าน Shadow Filter Context ซึ่งเป็น filter context ที่ DAX Engine เก็บไว้ก่อนที่ Visual จะเพิ่ม row/column filter เมื่อเรียก ALLSELECTED จะเรียกคืน shadow context นี้ ใช้ร่วมกับ CALCULATE และ SUM, AVERAGE, DIVIDE เพื่อคำนวณ Visual Total, Percentage of Selected, Dynamic Benchmark, Ranking within Selection และ Time Intelligence ที่เคารพ Slicer ต้องระวังการใช้งานใน iterator functions เช่น SUMX, FILTER เพราะอาจให้ผลลัพธ์ที่ไม่คาดคิด และระวัง Expanded Table Caveat ที่จะลบ filter ของ related table ด้วย

CALCULATE

CALCULATE เป็นฟังก์ชันหลักที่สำคัญที่สุดใน DAX ใช้สำหรับ evaluate expression ภายใต้ filter context ที่ถูกปรับเปลี่ยน สามารถเพิ่มตัวกรองใหม่ ลบตัวกรองเดิม หรือแทนที่ filter ที่มีอยู่ได้ รองรับทั้ง Boolean expression และ table expression เป็น filter arguments พร้อม filter modifier functions เช่น REMOVEFILTERS, ALL, ALLEXCEPT, KEEPFILTERS เพื่อควบคุมการกรองอย่างละเอียด มีพฤติกรรมพิเศษคือ context transition ที่เปลี่ยน row context เป็น filter context โดยอัตโนมัติ ทำให้เป็นเครื่องมือหลักในการสร้าง measure ที่ซับซ้อนและ calculated column ที่ต้องใช้ aggregation

CALCULATETABLE

CALCULATETABLE evaluate table expression ภายใต้ filter context ที่ถูกปรับเปลี่ยน แล้วคืนค่าเป็น table (ตาราง) ซึ่งแตกต่างจาก CALCULATE ที่คืนค่าเป็น scalar value รองรับ filter arguments 3 รูปแบบ: Boolean expression, table expression, และ filter modifier functions (REMOVEFILTERS, ALL, KEEPFILTERS, USERELATIONSHIP, CROSSFILTER) มีพฤติกรรมเหมือน CALCULATE ในทุกแง่มุมของการจัดการ filter context รวมถึง context transition แต่เหมาะสำหรับการสร้าง intermediate table ที่ถูกกรองแล้วส่งต่อให้ iterator functions หรือใช้ใน calculated table มักมี performance ดีกว่า FILTER ใน simple filtering scenarios เพราะ DAX engine สามารถทำ cardinality estimation และ optimization ได้ดีกว่า

FILTER

FILTER ใช้กรองแถวในตารางตามเงื่อนไขที่ซับซ้อน โดยวนลูปทุกแถวและประเมินเงื่อนไข เหมาะกับการกรองด้วย Measure หรือ Expression ซึ่ง Boolean Expression ทำไม่ได้ แต่ต้องระวังเรื่อง Performance เพราะเป็น Iterator Function ที่ช้ากว่า Boolean Expression ดังนั้นควรใช้เฉพาะเมื่อจำเป็น และอย่าใช้ FILTER กับ RELATED เพื่อกรองข้ามตาราง ให้กรองที่ Dimension Table โดยตรงแทน

KEEPFILTERS

KEEPFILTERS เป็นฟังก์ชันปรับตัวกรองที่ใช้ภายใน CALCULATE เพื่อ “คงตัวกรองเดิมไว้” แล้วนำตัวกรองใหม่มารวมกันแบบ AND (ตัดกันเฉพาะส่วนที่ตรงกัน) แทนพฤติกรรมปกติที่มักเขียนทับตัวกรองเดิมของคอลัมน์เดียวกัน

Table manipulation (1)
FILTERS

FILTERS คืนค่าเป็นตาราง (table) ของค่าที่ถูกกรองโดยตรง (direct filters) บนคอลัมน์ที่ระบุ เช่น ค่าที่ผู้ใช้เลือกจากตัวแบ่งส่วนข้อมูล ต่างจาก ALL/ALLEXCEPT ที่เคลียร์ตัวกรอง FILTERS ช่วยตรวจสอบและจัดการบริบทตัวกรองอย่างชาญฉลาด

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่