คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › ข้อมูลตัวกรอง › HASONEFILTER

HASONEFILTER

DAX · Power BIข้อมูลตัวกรองระดับกลางแบบ 6 · ไม่มีใน Excel ใช้วิธีอื่นแทน

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

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

HASONEFILTER คืออะไร

ตรวจว่าคอลัมน์ถูกกรองโดยตรงเหลือค่าเดียวหรือไม่ ต่างจาก HASONEVALUE ที่นับค่าที่เหลือหลังตัวกรองจากตารางอื่นด้วย

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

  • แสดงชื่อค่าที่ผู้ใช้เลือกใน Slicer เพียงค่าเดียว
  • แยกกรณีผู้ใช้เลือกเอง ออกจากกรณีที่แถวเหลือค่าเดียวเอง

รูปแบบสูตร

=HASONEFILTER(<columnName>)

Argument แต่ละตัว

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

Argumentจำเป็นไหมความหมาย
columnNameจำเป็นชื่อคอลัมน์ ใส่นิพจน์ไม่ได้

ลองเลย: HASONEVALUE กับ HASONEFILTER ในแถวพนักงาน

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

[ยอดขาย] = SUMX('ยอดขาย', 'ยอดขาย'[จำนวน] * 'ยอดขาย'[ราคาต่อหน่วย] * (1 - 'ยอดขาย'[ส่วนลด]))
[ภาคจาก HASONEVALUE] = IF(HASONEVALUE('พนักงานขาย'[ภูมิภาค]), SELECTEDVALUE('พนักงานขาย'[ภูมิภาค]), "ไม่ใช่ภาคเดียว")
Ctrl + Enter คำนวณ · พิมพ์ ' เลือกตาราง · [ เลือกคอลัมน์หรือ Measure
  • พนักงานขาย[ชื่อพนักงาน] = "สุภาพร หงษ์ทอง"
  • สินค้าไม่มีตัวกรอง
  • วันที่ไม่มีตัวกรอง
  • ยอดขายเหลือ 54 จาก 495 แถว · หนึ่งจุดคือหนึ่งคำสั่งซื้อ
HASONEVALUE กับ HASONEFILTER ในแถวพนักงาน
HASONEVALUE กับ HASONEFILTER ในแถวพนักงาน · ใช้ลูกศรเลื่อนระหว่างช่อง Enter เพื่อดูว่าตัวเลขนั้นคำนวณอย่างไร
พนักงานขายยอดขายภาคจาก HASONEVALUEภาคจาก HASONEFILTER
สุภาพร หงษ์ทอง
กมลชนก พงษ์พานิช
นันทิดา กิจเจริญ
อรทัย พิทักษ์วงศ์
ธีรพงษ์ ฉัตรแก้ว
วรวุฒิ แสงทอง
ปิยะนุช ศรีสวัสดิ์
ชยพล บุญมา
ยอดรวม
ไม่ได้เลือกภาคภาคจาก HASONEFILTER · สุภาพร หงษ์ทอง
ดูทีละขั้นขั้น 4 / 4

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

EXCEL=IF(COUNTA(ช่องเลือกภาค)=1, ช่องเลือกภาค, "ไม่ได้เลือกภาค")

Excel ดูจากช่องที่ผู้ใช้เลือกเอง

DAXภาคที่เลือก = IF(HASONEFILTER('พนักงานขาย'[ภูมิภาค]), SELECTEDVALUE('พนักงานขาย'[ภูมิภาค]), "ไม่ได้เลือกภาค")

ตอบว่าผู้ใช้เลือกภาคเดียวหรือไม่ ไม่ใช่ว่าแถวนั้นเหลือภาคเดียว

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

แถวพนักงานแต่ละคนเหลือภาคเดียวเสมอ HASONEVALUE จึงเป็น TRUE แต่ HASONEFILTER เป็น FALSE จนกว่าจะเลือกภาคใน Slicer เพราะไม่มีตัวกรองบนคอลัมน์ภาคโดยตรง
เลือกภาคแล้ว แถวของพนักงานภาคอื่นได้ค่าว่าง เพราะ SELECTEDVALUE ไม่เหลือค่าใดเลย
Microsoft Learn อธิบายว่า HASONEVALUE ดูจาก cross-filter ส่วน HASONEFILTER ดูจากตัวกรองโดยตรง

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

1. แถวพนักงานหนึ่งคน ยังไม่เลือกภาคใน Slicer HASONEFILTER('พนักงานขาย'[ภูมิภาค]) ได้อะไร

2. แถวเดียวกันนั้น HASONEVALUE('พนักงานขาย'[ภูมิภาค]) ได้อะไร

3. ต้องการแสดงชื่อภาคเฉพาะเมื่อผู้ใช้เลือกภาคเดียวใน Slicer ควรใช้อะไร

ไฟล์ฝึก HASONEFILTER

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

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

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

  1. ข้อ 1[ภาคจาก HASONEFILTER] ภาคที่เลือกใน Slicer ถ้าเลือกภาคเดียว · กรอง พนักงานขาย = กมลชนก พงษ์พานิช, ปี = 2024
  2. ข้อ 2[ภาคจาก HASONEFILTER] ภาคที่เลือกใน Slicer ถ้าเลือกภาคเดียว · กรอง พนักงานขาย = ธีรพงษ์ ฉัตรแก้ว, ภูมิภาค = ตะวันออกเฉียงเหนือ, ปี = 2025
  3. ข้อ 3[ยอดขาย] ยอดขายสุทธิ (จำนวน × ราคาต่อหน่วย × (1 − ส่วนลด)) · กรอง พนักงานขาย = อรทัย พิทักษ์วงศ์, ภูมิภาค = กลาง, ปี = 2025
  4. ข้อ 4[ภาคจาก HASONEVALUE] ภาคของแถว ถ้าเหลือภาคเดียว · กรอง พนักงานขาย = วรวุฒิ แสงทอง, ปี = 2024
  5. ข้อ 5[ยอดขาย] ยอดขายสุทธิ (จำนวน × ราคาต่อหน่วย × (1 − ส่วนลด)) · กรอง ปี = 2025

ไปต่อ

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

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

ดูหลักสูตร