Thep Excel

ISFILTEREDตรวจจับการกรองตัวอักษรของคอลัมน์

ISFILTERED ตรวจสอบว่าคอลัมน์ที่ระบุมีตัวกรองโดยตรงหรือไม่ ใช้เพื่อสร้าง Dynamic Measures ที่เปลี่ยนพฤติกรรมตามการกรองของผู้ใช้

fx
=ISFILTERED(<ColumnName>)

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

อัปเดต 15 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
ColumnName column reference ไม่มี – จำเป็นต้องระบุ คอลัมน์ที่ต้องการตรวจสอบว่ามีตัวกรองโดยตรง เช่น Product[Color], Date[Year], Territory[Region]

Additional Notes

ISFILTERED คือฟังก์ชันสำคัญสำหรับตรวจจับการกรองโดยตรง (Direct Filter) ที่ใช้กับคอลัมน์ที่ระบุ ถ้าผู้ใช้กรองตามสี ปี ภูมิภาค หรือคอลัมน์ใดก็ตาม ฟังก์ชันนี้จะส่งค่า TRUE กลับมา ถ้าไม่มีการกรอง จะส่งค่า FALSE ข้อที่สำคัญคือ ISFILTERED เฉพาะตรวจจับการกรองโดยตรง (Direct Filter) เท่านั้น ไม่ใช่การกรองทางอ้อม (Cross Filter) ที่มาจากตารางที่เกี่ยวข้อง

ที่เจ๋งคือ ISFILTERED ใช้สร้าง Dynamic Content ที่เปลี่ยนแปลงตามการกรองของผู้ใช้ ตัวอย่างเช่น ถ้าผู้ใช้เลือกสาขาเดียว แสดงว่ากรองตามสาขา (ISFILTERED = TRUE) แล้ว หากกรอง ให้คำนวณเฉพาะสาขานั้น หากไม่กรอง ให้คำนวณทั้งหมด นี่ช่วยสร้าง Report ที่ชาญฉลาดและ Responsive ต่อการกรองของผู้ใช้ได้ดีมาก

ส่วนตัวผมถือว่า ISFILTERED เป็น “Controller” ของ DAX ที่บอกให้รู้ว่าลูกค้ากำลังกรองอะไรอยู่ด้วยตอนนี้ ถ้าเข้าใจการใช้งาน ISFILTERED กับ IF และ CALCULATE คุณสามารถสร้าง Measures ที่ “ฉลาด” ได้ สามารถปรับตัวเองตามการกรองของผู้ใช้ได้อัตโนมัติ นี่คือความแตกต่างระหว่าง Static Report กับ Dynamic Report ที่ดี

Examples

ตรวจสอบว่า Color ถูกกรองหรือไม่ISFILTERED(Product[Color])

ฟังก์ชันนี้ส่งค่า TRUE เมื่อผู้ใช้เลือกสี เช่น คลิกเลือก "Red" หรือ "Blue" ในตัวกรอง จะส่งค่า FALSE เมื่อไม่มีการเลือก (แสดงทุกสี)

fx
=ISFILTERED(Product[Color])

ผลลัพธ์TRUE (ถ้าผู้ใช้เลือกสีใดสีหนึ่ง) หรือ FALSE (ไม่มีการกรองตามสี)
แสดงข้อความตามการกรองตามปีIF(ISFILTERED(Date[Year]), "Year: " & MAX(Date[Year]), "All Years")

ใช้ IF กับ ISFILTERED เพื่อแสดงข้อความแตกต่างกัน ถ้ากรองตามปี จะบอกปีที่กรอง ถ้าไม่กรอง จะแสดง "All Years" ช่วยให้ผู้ใช้เห็นว่าตัวเองกำลังดูข้อมูลอะไรอยู่

fx
=IF(ISFILTERED(Date[Year]),
"Year: " & MAX(Date[Year]),
"All Years")

ผลลัพธ์"Year: 2024" (ถ้ากรองตามปี) หรือ "All Years" (ถ้าไม่กรอง)
คำนวณแตกต่างตามการกรองภูมิภาคVAR RegionFiltered = ISFILTERED(Territory[Region]) VAR RegionSales = [Sales] VAR AllRegionSales = CALCULATE([Sales], ALL(Territory[Region])) RETURN IF(RegionFil…

ถ้า Region ถูกกรอง ให้แสดงยอดขายเฉพาะภูมิภาคนั้น ถ้าไม่กรอง ให้แสดงยอดขายทั้งหมด (ใช้ ALL เพื่อลบการกรอง) ตัวอย่างนี้ใช้ VAR เพื่อให้อ่านง่ายขึ้น

fx
VAR RegionFiltered = ISFILTERED(Territory[Region])
VAR RegionSales = [Sales]
VAR AllRegionSales = CALCULATE([Sales], ALL(Territory[Region]))
RETURN
IF(RegionFiltered, RegionSales, AllRegionSales)

ผลลัพธ์ยอดขายของภูมิภาคที่กรอง (ถ้ากรอง) หรือยอดขายทั้งหมด (ถ้าไม่กรอง)
ลบการกรองเมื่อไม่มีการเลือกVAR FilterStatus = ISFILTERED(Product[Category]) RETURN IF(FilterStatus, SUM(Sales[Amount]), SUM(Sales[Amount]) + 100)

ตัวอย่างนี้แสดงว่า ISFILTERED สามารถใช้เพื่อคำนวณค่า (Formula) แตกต่างกันตามการกรอง ช่วยสร้าง Conditional Logic ที่ยืดหยุ่นในหน่วยวัด

fx
VAR FilterStatus = ISFILTERED(Product[Category])
RETURN
IF(FilterStatus,
SUM(Sales[Amount]),
SUM(Sales[Amount]) + 100)

ผลลัพธ์ยอดขายตามการกรอง หรือยอดขายบวก 100 เมื่อไม่มีการกรอง

FAQs

ISFILTERED ต่างจาก ISCROSSFILTERED อย่างไร?+

ISFILTERED ตรวจสอบว่าคอลัมน์ถูกกรองโดยตรง (Direct Filter) เท่านั้น เช่นผู้ใช้คลิกเลือกค่า ส่วน ISCROSSFILTERED ตรวจสอบทั้งการกรองโดยตรง AND การกรองทางอ้อม (Cross Filter) ที่มาจากตารางที่เกี่ยวข้อง ตัวอย่าง: ถ้าเลือก Category = "Electronics" (Direct) ISFILTERED กับ ISCROSSFILTERED ทั้งคู่ส่งค่า TRUE แต่ถ้า Category ถูกกรองมาจาก Related Table (Cross Filter) เช่น กรองจาก Product Table ผ่าน Relationship ISCROSSFILTERED จะส่งค่า TRUE แต่ ISFILTERED จะส่งค่า FALSE

ใช้ ISFILTERED ในคำนวณคอลัมน์ (Calculated Column) ได้ไหม?+

ได้ แต่ต้องระวัง Calculated Column ทำงานใน Row Context ที่เปลี่ยน Filter Context ไปแล้ว ดังนั้น ISFILTERED ในคอลัมน์ที่คำนวณมักส่งค่า FALSE เสมอ เนื่องจาก Filter Context ยังไม่ได้ถูกกำหนด ถ้าต้องการใช้ ISFILTERED ให้ใช้ใน Measures หรือ Visual Calculation แทน

ถ้า ISFILTERED ส่งค่า FALSE หมายความว่าอะไร?+

หมายความว่าไม่มีตัวกรองโดยตรง (Direct Filter) ที่ใช้กับคอลัมน์นั้น แต่อาจมี Cross Filter จากตารางอื่นอยู่ได้ ตัวอย่าง: ถ้าเลือก Region แล้ว Territory Table ถูกกรอง แต่ Product[Color] ไม่ถูกเลือก แล้ว ISFILTERED(Product[Color]) จะส่งค่า FALSE เพราะไม่มีการกรองโดยตรงที่ Product[Color]

ISFILTERED กับ Filter Context มีความสัมพันธ์อย่างไร?+

ISFILTERED ตรวจสอบ Filter Context ที่มีอยู่ในตอนที่ Measure ถูกคำนวณ ถ้ามี Filter Context ที่ใช้กับคอลัมน์ที่ระบุ ISFILTERED จะส่งค่า TRUE ถ้าไม่มี จะส่งค่า FALSE Context Transition จะเกิดขึ้นเมื่อ Measure ถูกใช้ใน Row Context (เช่นตารางที่มี Row) และจะแปลง Row Context เป็น Filter Context

ใช้ ISFILTERED เพื่อแสดง/ซ่อนข้อมูลในแดชบอร์ดได้ไหม?+

ได้ ใช้ ISFILTERED เพื่อสร้าง Dynamic Measures ที่ควบคุมการแสดงผล ตัวอย่าง: ถ้า ISFILTERED(Date[Month]) = TRUE แล้ว ให้แสดงรายละเอียดของเดือนนั้น ถ้าไม่กรอง ให้แสดงสรุปรายปี วิธีนี้ช่วยให้ Report เปลี่ยนแปลงตามการกรองของผู้ใช้โดยอัตโนมัติ

Resources & Related

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

ฟังก์ชันนี้ISFILTEREDInformation
Information (3)
EVALUATEANDLOG

EVALUATEANDLOG คำนวณนิพจน์และส่งผลลัพธ์ไปยัง log สำหรับการตรวจสอบและดีบัก ทำให้เห็นค่าระหว่างกลางของการคำนวณ DAX โดยไม่ต้องเขียนตารางชั่วคราว

HASONEFILTER

ตรวจว่าคอลัมน์ถูก filter โดยตรงให้เหลือค่าเดียวหรือไม่ เหมาะกับการควบคุมการแสดงผลตามสถานะการเลือกของผู้ใช้

HASONEVALUE

HASONEVALUE ตรวจสอบว่า Column ที่ผ่านการ Filter มีเพียงค่าเดียวเท่านั้น Return TRUE หากตรงตามเงื่อนไข FALSE หากไม่ใช่ ใช้หลักเพื่อสร้าง Measure ที่ "ฉลาด" ตามการเลือก Filter ของผู้ใช้

Filter (2)
ALL

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

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

Table manipulation (1)
FILTERS

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

Comments

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