Thep Excel

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

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

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

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
8/10

Difficulty
4/10

Usefulness
8/10

Syntax & Arguments

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

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

How it works

Dynamic Title / Header

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

Conditional Measure Calculation

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

Examples

แสดงสีที่เลือกในแบบง่ายๆ
Selected Color = SELECTEDVALUE( Products[Color], "Multiple Colors Selected" )
ใช้ในการแสดงสีผลิตภัณฑ์ที่ผู้ใช้เลือก หากมีการเลือกมากกว่า 1 สี ให้แสดงข้อความแทน เป็นการป้องกัน BLANK() ที่ดูแปลกๆในรายงาน
DAX Formula:

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

Result:

เลือก Red → "Red" | เลือก Red และ Blue → "Multiple Colors Selected" | ไม่เลือก → "Multiple Colors Selected"

ดึงปีที่เลือกสำหรับเปรียบเทียบปีต่อปี
Selected Year = VAR SelectedYr = SELECTEDVALUE( 'Calendar'[Year], YEAR(TODAY()) ) RETURN SelectedYr
ถ้าผู้ใช้ไม่เลือกปี ให้ใช้ปีปัจจุบันเป็นค่าดีฟอลต์ แล้วใช้ค่านี้ในการคำนวณอื่นๆ ช่วยให้ dashboard มีความชาญฉลาด (smart default)
DAX Formula:

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

Result:

เลือก 2024 → 2024 | ไม่เลือก → ปีปัจจุบัน

ตรวจสอบก่อนคำนวณการเปลี่ยนแปลงแบบปีต่อปี
YoY Growth = VAR CurrentYear = SELECTEDVALUE( 'Calendar'[Year], BLANK() ) VAR PreviousYear = CurrentYear - 1 VAR CurrentSales = CALCULATE( SUM(Sales[Amount]), '…
โปรแกรมนี้ใช้ SELECTEDVALUE เพื่อดึงปีที่เลือก แล้วคำนวณการเปลี่ยนแปลงเมื่อเทียบกับปีก่อนหน้า เป็นตัวอย่าง Advanced ที่ SELECTEDVALUE ช่วยให้โปรแกรมมีความชัดเจนมากขึ้นครับ
DAX Formula:

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())

Result:

เลือก 2024 → % เปลี่ยนแปลงจาก 2023 | ไม่เลือก → BLANK()

เทียบเท่ากับ IF + HASONEVALUE + VALUES
Manual Equivalent = IF( HASONEVALUE(Products[Category]), VALUES(Products[Category]), "No Single Category" )
นี่คือวิธีที่ SELECTEDVALUE ทำงานจริงๆด้านหลัง คือ "ถ้ามีค่าเดียว ให้คืนค่า ถ้าไม่ใช่ให้คืนค่าอื่น" – SELECTEDVALUE เพียงแค่เขียนสั้นกว่าและอ่านง่ายกว่านี่ครับ
DAX Formula:

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

Result:

ผลลัพธ์เดียวกับ 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]" เพื่อเพิ่มความเข้าใจของผู้ใช้ครับ
DAX Formula:

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

Result:

เลือก "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

Additional Notes

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

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

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

Leave a Reply

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