Thep Excel

KEEPFILTERS – คงตัวกรองเดิมไว้ (Preserve Filters)

คงตัวกรองเดิมไว้เมื่อเพิ่มตัวกรองใหม่ใน CALCULATE

KEEPFILTERS เป็น Filter Modifier ที่ใช้ภายใน CALCULATE เพื่อระบุว่าตัวกรองใหม่ที่เพิ่มเข้าไป ควรถูกรวม (Intersect) กับตัวกรองที่มีอยู่เดิม แทนที่จะไปเขียนทับตัวกรองเดิม

=KEEPFILTERS(Expression)

By ThepExcel AI Agent
1 December 2025

Syntax & Arguments

=KEEPFILTERS(Expression)

Argument Type Required Default Description
Expression table/boolean Yes นิพจน์ตารางหรือบูลีนที่ต้องการนำไปรวมกับตัวกรองเดิม

How it works

คำนวณยอดขายสำหรับสินค้าที่เลือกและสีแดง

ถ้าผู้ใช้เลือกสินค้าใน Slicer แล้วอยากจะดูว่าในกลุ่มสินค้านั้นมี 'สีแดง' ขายได้เท่าไหร่

การรวมตัวกรองจากหลายแหล่ง

เมื่อต้องการให้ตัวกรองจาก Measure และตัวกรองจาก Context ทำงานร่วมกันแบบ AND

Examples

ตัวอย่างที่ 1: ยอดขายสินค้าสีแดง (คง Slicer อื่นไว้)

ถ้ามีการเลือกปี 2023 ใน Slicer และมี Measure นี้ ตัวกรอง 'Product'[Color] = "Red" จะไปรวมกับ 'Date'[Year] = 2023 ทำให้ได้ยอดขายสินค้าสีแดงเฉพาะปี 2023
DAX Formula:

Red Sales = CALCULATE( [Total Sales], KEEPFILTERS('Product'[Color] = "Red") )

Result:

ยอดขายเฉพาะสินค้าสีแดง ภายใน Context ที่ถูกกรองอยู่แล้ว

ตัวอย่างที่ 2: เปรียบเทียบยอดขายแบรนด์ที่เลือก vs แบรนด์ A

ถ้า Slicer เลือก Brand B และ C -> ผลลัพธ์จะเป็น BLANK (เพราะ A ไม่อยู่ใน B, C) แต่ถ้าเลือก A, B -> ผลลัพธ์จะเป็นยอดขาย A
DAX Formula:

Brand A Sales = CALCULATE( [Total Sales], KEEPFILTERS('Product'[Brand] = "Brand A") )

Result:

ยอดขาย Brand A (ถ้า Brand A ถูกเลือกอยู่ด้วย)

ตัวอย่างที่ 3: แสดงเฉพาะสินค้า Top 10 ในหมวดที่เลือก

KEEPFILTERS ทำให้ TOPN ทำงานร่วมกับ Filter หมวดหมู่สินค้าที่ผู้ใช้เลือก ไม่ใช่ดึง Top 10 ของทั้งบริษัทมาแสดง
DAX Formula:

Top 10 Sales = 
CALCULATE( 
    [Total Sales], 
    KEEPFILTERS( TOPN(10, ALL('Product'), [Total Sales]) ) 
)

Result:

ยอดขายสินค้า 10 อันดับแรก ภายในหมวดหมู่ที่เลือก

FAQs

KEEPFILTERS จำเป็นต้องใช้กับ CALCULATE ไหม?

ใช่ KEEPFILTERS เป็น Filter Modifier ที่ออกแบบมาเพื่อทำงานร่วมกับ CALCULATE เท่านั้น

Resources & Related

Additional Notes

KEEPFILTERS เป็นฟังก์ชัน Modifier ที่ใช้ภายใน CALCULATE เพื่อ คงตัวกรองเดิมที่มีอยู่ ไม่ให้ถูกเขียนทับ (Overwrite) ด้วยตัวกรองใหม่ที่เราใส่เข้าไปใน CALCULATE

โดยปกติแล้ว เมื่อเราใส่ Filter ใน CALCULATE ตัวกรองเหล่านั้นจะ Overwrite ตัวกรองเดิมที่อยู่ใน Context แต่ KEEPFILTERS จะเปลี่ยนพฤติกรรมนั้นให้เป็นการรวมตัวกรองเดิมและตัวกรองใหม่เข้าด้วยกัน (AND Operation)

Leave a Reply

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