Thep Excel

SELECTEDVALUEดึงค่าเดียวจาก Filter Context

SELECTEDVALUE ตรวจสอบว่า Filter Context ลดลงเหลือเพียงค่าเดียวแล้ว ถ้าใช่ให้คืนค่านั้น ถ้าไม่ใช่ให้คืนค่าอื่นแทน

fx
=SELECTEDVALUE(<columnName>[, <alternateResult>])

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
columnName Column Reference คอลัมน์ที่ต้องการตรวจสอบ ต้องเป็นการอ้างอิงคอลัมน์โดยตรง (ไม่ใช่นิพจน์)
[alternateResult]ไม่บังคับ Scalar Value BLANK() ค่าที่จะคืนกลับเมื่อมี 0 หรือหลายค่าใน Filter Context หากไม่ระบุจะคืน BLANK()

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

SELECTEDVALUE เป็นฟังก์ชันตรวจสอบ Filter Context ที่ช่วยเมื่อคุณต้องการให้แน่ใจว่ามีเพียงค่าเดียวถูกเลือก คืนค่าสเกลาร์เมื่อมี 1 ค่าพอดี หากมี 0 หรือหลายค่าให้คืนค่าที่กำหนด (ค่าเริ่มต้นคือ BLANK()).

ส่วนตัวผม SELECTEDVALUE คือ “สตูดิโอการตรวจสอบ” ของ DAX เลยครับ มันบอกคุณชัดเจนว่า “ฉันเห็นค่าเดียวแน่นอน” หรือ “ฉันไม่แน่ใจ” (มี 0 หรือหลายค่า) ซึ่งมีประโยชน์มากเวลาต้องการแสดงสถานะการคัดกรองของผู้ใช้ได้เลยครับ

ความเจ๋งของ SELECTEDVALUE คือการใช้ alternateResult เพื่อจัดการกับสถานการณ์ที่ไม่ได้เลือกอะไรเลย ไม่เหมือน VALUES() ที่อาจ error หรือคืนค่าแปลกๆ ทำให้ dashboard มีความเสถียรมากขึ้นครับ

How it works

Dynamic Title / Header

แสดงชื่อสินค้าที่ถูกเลือกใน Slicer บนหัวรายงาน

Conditional Measure Calculation

คำนวณ Measure ที่แตกต่างกันขึ้นอยู่กับว่าผู้ใช้เลือกสินค้าหมวดหมู่เดียว หรือหลายหมวดหมู่

Examples

แสดงสีที่เลือกในแบบง่ายๆSelected Color = SELECTEDVALUE( Products[Color], "Multiple Colors Selected" )

ใช้ในการแสดงสีผลิตภัณฑ์ที่ผู้ใช้เลือก หากมีการเลือกมากกว่า 1 สี ให้แสดงข้อความแทน เป็นการป้องกัน BLANK() ที่ดูแปลกๆในรายงาน

fx
Selected Color =
SELECTEDVALUE(
Products[Color],
"Multiple Colors Selected"
)

ผลลัพธ์เลือก Red → "Red" | เลือก Red และ Blue → "Multiple Colors Selected" | ไม่เลือก → "Multiple Colors Selected"
ดึงปีที่เลือกสำหรับเปรียบเทียบปีต่อปีSelected Year = VAR SelectedYr = SELECTEDVALUE( 'Calendar'[Year], YEAR(TODAY()) ) RETURN SelectedYr

ถ้าผู้ใช้ไม่เลือกปี ให้ใช้ปีปัจจุบันเป็นค่าดีฟอลต์ แล้วใช้ค่านี้ในการคำนวณอื่นๆ ช่วยให้ dashboard มีความชาญฉลาด (smart default)

fx
Selected Year =
VAR SelectedYr = SELECTEDVALUE(
'Calendar'[Year],
YEAR(TODAY())
)
RETURN SelectedYr

ผลลัพธ์เลือก 2024 → 2024 | ไม่เลือก → ปีปัจจุบัน
ตรวจสอบก่อนคำนวณการเปลี่ยนแปลงแบบปีต่อปีYoY Growth = VAR CurrentYear = SELECTEDVALUE( 'Calendar'[Year], BLANK() ) VAR PreviousYear = CurrentYear – 1 VAR CurrentSales = CALCULATE( SUM(Sales[Amount]), '…

โปรแกรมนี้ใช้ SELECTEDVALUE เพื่อดึงปีที่เลือก แล้วคำนวณการเปลี่ยนแปลงเมื่อเทียบกับปีก่อนหน้า เป็นตัวอย่าง Advanced ที่ SELECTEDVALUE ช่วยให้โปรแกรมมีความชัดเจนมากขึ้นครับ

fx
YoY Growth =
VAR CurrentYear = SELECTEDVALUE(
'Calendar'[Year],
BLANK()
)
VAR PreviousYear = CurrentYear – 1
VAR CurrentSales = CALCULATE(
SUM(Sales[Amount]),
'Calendar'[Year] = CurrentYear
)
VAR PreviousSales = CALCULATE(
SUM(Sales[Amount]),
'Calendar'[Year] = PreviousYear
)
RETURN
DIVIDE(CurrentSales – PreviousSales, PreviousSales, BLANK())

ผลลัพธ์เลือก 2024 → % เปลี่ยนแปลงจาก 2023 | ไม่เลือก → BLANK()
เทียบเท่ากับ IF + HASONEVALUE + VALUESManual Equivalent = IF( HASONEVALUE(Products[Category]), VALUES(Products[Category]), "No Single Category" )

นี่คือวิธีที่ SELECTEDVALUE ทำงานจริงๆด้านหลัง คือ "ถ้ามีค่าเดียว ให้คืนค่า ถ้าไม่ใช่ให้คืนค่าอื่น" – SELECTEDVALUE เพียงแค่เขียนสั้นกว่าและอ่านง่ายกว่านี่ครับ

fx
Manual Equivalent =
IF(
HASONEVALUE(Products[Category]),
VALUES(Products[Category]),
"No Single Category"
)

ผลลัพธ์ผลลัพธ์เดียวกับ SELECTEDVALUE(Products[Category], "No Single Category")
สร้างตัวอักษร Tooltip ที่ขึ้นอยู่กับการเลือกRegion Filter Status = VAR RegionSelected = SELECTEDVALUE( 'Geography'[Region], "All Regions" ) RETURN "Viewing data for: " & RegionSelected

ใช้ SELECTEDVALUE ในการสร้างข้อความคำแนะนำ (Tooltip) หรือชื่อเรื่องที่บอกผู้ใช้ว่า "คุณกำลังมองหาข้อมูลของ [Region]" เพื่อเพิ่มความเข้าใจของผู้ใช้ครับ

fx
Region Filter Status =
VAR RegionSelected = SELECTEDVALUE(
'Geography'[Region],
"All Regions"
)
RETURN
"Viewing data for: " & RegionSelected

ผลลัพธ์เลือก "North" → "Viewing data for: North" | ไม่เลือก → "Viewing data for: All Regions"

FAQs

SELECTEDVALUE ต่างจาก VALUES กันยังไง?+

VALUES() คืนตารางมี (Table) สำหรับค่าทั้งหมด ส่วน SELECTEDVALUE() คืนค่าสเกลาร์เมื่อมี 1 ค่าพอดี หากมี 0 หรือหลายค่าให้คืน alternateResult ที่คุณระบุ ทำให้ SELECTEDVALUE ปลอดภัยกว่าและอ่านง่ายกว่าครับ โดยเฉพาะเมื่อต้องการข้อความคำเตือน (alert message)

ใช้ SELECTEDVALUE ใน Calculated Column ได้ไหม?+

ได้เต็มที่ในโหมด Import Mode ครับ เพราะมี Row Context ที่ชัดเจน ส่วน DirectQuery Mode ไม่สนับสนุนใน Calculated Column หรือ RLS Rules ถ้าต้องใช้ ให้สร้างเป็น Measure แทน

ถ้าไม่ระบุ alternateResult จะคืนค่าอะไร?+

จะคืน BLANK() ซึ่งแสดงผลว่างเปล่า ถ้าอยากให้ชัดเจนว่า "ไม่ได้เลือก" ให้ระบุ alternateResult เช่น "No selection" หรือ 0 ได้ครับ

SELECTEDVALUE ทำงานใน DirectQuery Mode ได้ไหม?+

ใน Measure ได้นะครับ แต่ Calculated Column และ RLS Rules ใน DirectQuery ไม่สนับสนุน ทั่วไปคุณจะใช้ Import Mode หรือ Dual Mode ได้นครับ

ทำไมไม่ใช้ SELECTEDVALUE กับ Fields Parameter ได้?+

Fields Parameter เป็นคอลัมน์ Virtual ไม่ใช่คอลัมน์ที่แท้จริง SELECTEDVALUE ต้องการอ้างอิงคอลัมน์จริง ถ้าต้องใช้ให้ใช้ SELECTCOLUMNS + SUMMARIZE เป็นวิธีแก้ไขครับ

Resources & Related

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

ฟังก์ชันนี้SELECTEDVALUEFilter
Filter (2)
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

LOOKUPVALUE

LOOKUPVALUE เป็นฟังก์ชันค้นหาที่ยืดหยุ่น โดยจะดึงค่าจากคอลัมน์หนึ่งโดยการค้นหาตามเงื่อนไขหลายตัวในเวลาเดียวกัน

Time Intelligence (2)
FIRSTNONBLANKVALUE

FIRSTNONBLANKVALUE คืนค่าแรกที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ซึ่งมีประโยชน์ในการหาค่าเริ่มต้นหรือค่าแรกที่มีข้อมูลจริง เช่นยอดขายของวันแรกที่มีการขาย

LASTNONBLANKVALUE

LASTNONBLANKVALUE คืนค่าสุดท้ายที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ในบริบทตัวกรองปัจจุบัน ใช้หา "ค่าล่าสุดที่มีข้อมูล" เช่นยอดขายของวันล่าสุดที่มีค่า

Information (2)
HASONEFILTER

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

HASONEVALUE

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

Logical (1)
COALESCE

COALESCE คืนค่าแรกที่ไม่เป็น BLANK() จากหลายอาร์กิวเมนต์ เหมาะกับการกำหนดค่าเริ่มต้น (fallback) เช่น ใช้ค่า 0 เมื่อ Measure เป็น BLANK หรือเลือกค่าจากหลายแหล่งตามลำดับความสำคัญ

Comments

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