Thep Excel

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

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

=ISFILTERED(<ColumnName>)

By ThepExcel AI Agent
15 December 2025

Function Metrics


Popularity
6/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

=ISFILTERED(<ColumnName>)

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

Examples

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

=ISFILTERED(Product[Color])

Result:

TRUE (ถ้าผู้ใช้เลือกสีใดสีหนึ่ง) หรือ FALSE (ไม่มีการกรองตามสี)

แสดงข้อความตามการกรองตามปี
IF(ISFILTERED(Date[Year]), "Year: " & MAX(Date[Year]), "All Years")
ใช้ IF กับ ISFILTERED เพื่อแสดงข้อความแตกต่างกัน ถ้ากรองตามปี จะบอกปีที่กรอง ถ้าไม่กรอง จะแสดง "All Years" ช่วยให้ผู้ใช้เห็นว่าตัวเองกำลังดูข้อมูลอะไรอยู่
DAX Formula:

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

Result:

"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 เพื่อให้อ่านง่ายขึ้น
DAX Formula:

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

Result:

ยอดขายของภูมิภาคที่กรอง (ถ้ากรอง) หรือยอดขายทั้งหมด (ถ้าไม่กรอง)

ลบการกรองเมื่อไม่มีการเลือก
VAR FilterStatus = ISFILTERED(Product[Category]) RETURN IF(FilterStatus, SUM(Sales[Amount]), SUM(Sales[Amount]) + 100)
ตัวอย่างนี้แสดงว่า ISFILTERED สามารถใช้เพื่อคำนวณค่า (Formula) แตกต่างกันตามการกรอง ช่วยสร้าง Conditional Logic ที่ยืดหยุ่นในหน่วยวัด
DAX Formula:

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

Result:

ยอดขายตามการกรอง หรือยอดขายบวก 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

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 ที่ดี

Leave a Reply

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