คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › ตัวกรอง (Filter) › KEEPFILTERS

KEEPFILTERS

DAX · Power BIตัวกรอง (Filter)ระดับกลางแบบ 5 · มีเฉพาะใน DAX

อัปเดต 27 ก.ย. 2569 · ตัวเลขในตัวอย่างตรงกับตัวคำนวณอ้างอิงที่เขียนแยก และสูตร Excel ที่คำนวณจากข้อมูลชุดเดียวกัน · ยังไม่ได้ตรวจใน Power BI Desktop

เอกสารอ้างอิง: KEEPFILTERS (Microsoft Learn) · syntax และหมายเหตุในหน้านี้ตรวจกับหน้านี้ของ Microsoft · ตัวจำลองในหน้านี้รองรับเฉพาะรูปแบบที่ใช้ในตัวอย่าง (เช่น ไม่รองรับ calendar-based time intelligence)

KEEPFILTERS คืออะไร

ครอบตัวกรองใน CALCULATE ให้ใช้ร่วมกับตัวกรองเดิม (ต้องผ่านทั้งคู่) แทนการแทนที่ตัวกรองเดิมบนคอลัมน์เดียวกัน

ใช้เมื่อไหร่

  • ใส่ตัวกรองใน CALCULATE โดยไม่ทับสิ่งที่ผู้ใช้เลือก
  • ทำ Measure ของกลุ่มเฉพาะที่ควรว่างในแถวของกลุ่มอื่น

รูปแบบสูตร

=KEEPFILTERS(<expression>)

Argument แต่ละตัว

ชี้ที่ argument ในรูปแบบสูตรด้านบนเพื่อไฮไลต์แถวนั้น

Argumentจำเป็นไหมความหมาย
expressionจำเป็นตัวกรองที่ใช้ใน CALCULATE เช่น 'ยอดขาย'[ช่องทาง] = "Online"

ลองเลย: ตัวกรองที่แทนที่ กับตัวกรองที่ใช้ร่วมกัน แยกตามช่องทาง

คลิกตัวเลขในตารางเพื่อดูตัวกรองไหลผ่านโมเดลจนเป็นตัวเลขนั้น เลือกค่าใน Slicer แก้ Measure ได้ หรือกด Excel เพื่อดูสูตร Excel ที่ได้คำตอบเดียวกัน

[ยอดขาย] = SUMX('ยอดขาย', 'ยอดขาย'[จำนวน] * 'ยอดขาย'[ราคาต่อหน่วย] * (1 - 'ยอดขาย'[ส่วนลด]))
[ยอด Online (แทนที่)] = CALCULATE([ยอดขาย], 'ยอดขาย'[ช่องทาง] = "Online")
Ctrl + Enter คำนวณ · พิมพ์ ' เลือกตาราง · [ เลือกคอลัมน์หรือ Measure
  • พนักงานขายไม่มีตัวกรอง
  • สินค้าไม่มีตัวกรอง
  • วันที่[ปี] = 2025
  • ยอดขาย[ช่องทาง] = "Modern Trade"[ช่องทาง] = "Online"เหลือ 0 จาก 495 แถว · หนึ่งจุดคือหนึ่งคำสั่งซื้อ
ตัวกรองที่แทนที่ กับตัวกรองที่ใช้ร่วมกัน แยกตามช่องทาง
ตัวกรองที่แทนที่ กับตัวกรองที่ใช้ร่วมกัน แยกตามช่องทาง · ใช้ลูกศรเลื่อนระหว่างช่อง Enter เพื่อดูว่าตัวเลขนั้นคำนวณอย่างไร
ช่องทางยอดขายยอด Online (แทนที่)ยอด Online (KEEPFILTERS)
Modern Trade
Traditional Trade
Online
Food Service
ยอดรวม
(ว่าง)ยอด Online (KEEPFILTERS) · Modern Trade · 2025
ดูทีละขั้นขั้น 4 / 4

ถ้าคุณเขียน Excel อยู่แล้ว

EXCEL=SUMIFS(ยอดขาย[ยอดสุทธิ], ยอดขาย[ช่องทาง], "Modern Trade", ยอดขาย[ช่องทาง], "Online")

SUMIFS ใส่ทุกเงื่อนไขพร้อมกันเสมอ จึงทำงานแบบ KEEPFILTERS

DAXยอด Online (KEEPFILTERS) = CALCULATE([ยอดขาย], KEEPFILTERS('ยอดขาย'[ช่องทาง] = "Online"))

แถวช่องทางอื่นได้ค่าว่าง เพราะต้องเป็นทั้งช่องทางนั้นและ Online

ข้อผิดพลาดและเคล็ดลับ

แถว Modern Trade: แบบแทนที่ได้ยอด Online เพราะ CALCULATE เขียนทับตัวกรองช่องทาง แบบ KEEPFILTERS ได้ค่าว่างเพราะไม่มีแถวที่เป็นทั้งสองช่องทาง
ใช้ KEEPFILTERS เมื่อ Measure ต้องเคารพสิ่งที่ผู้ใช้เลือก เช่น ยอดสินค้ากลุ่มพิเศษที่ไม่ควรแสดงในแถวของสินค้าอื่น
KEEPFILTERS ใช้ได้เฉพาะในตำแหน่งตัวกรองของ CALCULATE หรือ CALCULATETABLE

แบบทดสอบ 3 ข้อ

1. แถว Modern Trade ของ CALCULATE([ยอดขาย], KEEPFILTERS('ยอดขาย'[ช่องทาง] = "Online")) ได้อะไร

2. ไม่มี KEEPFILTERS แถว Modern Trade ได้อะไร

3. SUMIFS ของ Excel ทำงานแบบใด

ไฟล์ฝึก KEEPFILTERS

9Expert-DAX-KEEPFILTERS-Practice-v1.0.xlsx

รุ่น 1.0 · 26/9/2026 · 69 KB · ไม่มี Macro · นำเข้า Power BI แล้วทำโจทย์ พิมพ์คำตอบกลับในไฟล์ ตรวจเอง
เริ่มต้นยอดขายสินค้าพนักงานขายวันที่คงคลังเป้าภูมิภาคแบบฝึกหัดเฉลย

โจทย์ในชีตแบบฝึกหัด

  1. ข้อ 1[ยอด Online (KEEPFILTERS)] ยอดขาย Online แบบใช้ร่วมกับตัวกรองช่องทางเดิม · กรอง ช่องทาง = Online, ปี = 2024

ไปต่อ

อยากเขียน DAX สำหรับรายงานจริงทั้งระบบ

ต่อยอดใน Data Analysis Expression (DAX) for Power BI: Measures, X Aggregation, CALCULATE, Date Table และ Time Intelligence (2 วัน)

ดูหลักสูตร