Thep Excel

MEDIANX – ฟังก์ชัน Iterator หามัธยฐาน

MEDIANX คำนวณค่ามัธยฐาน (50th Percentile) ของนิพจน์ที่ประเมินในแต่ละแถว ต่างจาก MEDIAN ที่ทำงานบนคอลัมน์เดียว MEDIANX คือ iterator function ที่ให้คุณสร้างนิพจล์ซับซ้อนก่อนหาค่ากลาง

=MEDIANX(<Table>, <Expression>)

By ThepExcel AI Agent
15 December 2025

Function Metrics


Popularity
5/10

Difficulty
5/10

Usefulness
5/10

Syntax & Arguments

=MEDIANX(<Table>, <Expression>)

Argument Type Required Default Description
Table table Yes ไม่มี ตารางข้อมูลที่จะประเมินนิพจน์สำหรับแต่ละแถว หรือ expression ที่ส่งคืนตาราง
Expression expression Yes ไม่มี นิพจน์ (expression) ที่ประเมินแต่ละแถว สามารถเป็นการอ้างอิงคอลัมน์เดียว คำนวณ เช่น Sales[Qty]*Sales[Price] หรือ RELATED columns

Examples

หามัธยฐานของราคารวม (Quantity × Price)
Median Sales Line Amount = VAR Threshold = MEDIANX( Sales, Sales[Quantity] * Sales[Price] ) RETURN Threshold
MEDIANX ประเมินนิพจน์ Quantity * Price สำหรับแต่ละแถว 50% ของแถวมีค่าต่ำกว่า 4,250 และ 50% สูงกว่า ใช้ VAR เพื่อเก็บค่า median ไว้ใช้งาน
DAX Formula:

Median Sales Line Amount =
VAR Threshold =
  MEDIANX(
    Sales,
    Sales[Quantity] * Sales[Price]
  )
RETURN
  Threshold

Result:

ค่ากลางของยอดขาย = 4,250

หามัธยฐานของการขายกรอง (ด้วย FILTER)
Median Sales USA = MEDIANX( FILTER( Sales, RELATED(Store[Country]) = "USA" ), Sales[Amount] )
MEDIANX ทำงานกับ FILTER ได้อย่างดี แม้ว่าตาราง Sales จะ filtered หลาย records MEDIANX ยังประเมินนิพจน์ในแต่ละแถวของตาราง filtered ก่อน เหตุผลคือ FILTER สร้างบริบท row context ใหม่ แล้ว MEDIANX ประเมิน expression ในบริบทนั้น
DAX Formula:

Median Sales USA =
  MEDIANX(
    FILTER(
      Sales,
      RELATED(Store[Country]) = "USA"
    ),
    Sales[Amount]
  )

Result:

3,500

หามัธยฐานของค่า (รวม BLANK)
Median With Blanks = MEDIANX( Transactions, Transactions[NetAmount] )
สำคัญ: ถ้า NetAmount มี BLANK ค่าเหล่านั้นจะรวมในการคำนวณ มัธยฐานตั้งอยู่ที่ 2,100 ซึ่งอาจแตกต่างจากผลลัพธ์ของ MEDIAN ที่ละเว้น BLANK
DAX Formula:

Median With Blanks =
  MEDIANX(
    Transactions,
    Transactions[NetAmount]
  )

Result:

2,100

หามัธยฐานสำหรับแต่ละหมวดหมู่ (ใน Measure)
Median by Category = IF( HASONEVALUE(Product[Category]), MEDIANX( FILTER( ALL(Sales), RELATED(Product[Category]) = VALUES(Product[Category]) ), Sales[Amount] ),…
ใช้ HASONEVALUE ตรวจสอบว่าเลือก category เพียง 1 อัน ถ้าใช่ ให้คำนวณ median ของการขายในหมวดหมู่นั้น โดย FILTER + ALL เพื่อให้ดึงแถวทั้งหมด แล้วกรองด้วย RELATED ยุ่งแล้ว แต่ RAW ของการทำงานกับบริบท
DAX Formula:

Median by Category =
IF(
  HASONEVALUE(Product[Category]),
  MEDIANX(
    FILTER(
      ALL(Sales),
      RELATED(Product[Category]) = VALUES(Product[Category])
    ),
    Sales[Amount]
  ),
  BLANK()
)

Result:

1,800 (สำหรับหมวดหมู่ที่เลือก)

FAQs

MEDIANX ต่างจาก MEDIAN อย่างไร

MEDIAN ทำงานบนคอลัมน์เดียว และละเว้น BLANK ส่วน MEDIANX เป็น iterator function ที่ประเมินนิพจน์ในแต่ละแถว และ รวม BLANK ในการคำนวณ ตัวอย่างเช่น MEDIAN(Sales[Price]) ประเมินเฉพาะราคา ส่วน MEDIANX(Sales, Sales[Qty]*Sales[Price]) คำนวณ Quantity*Price ก่อน แล้วจึงหาค่าเฉลี่ย

ทำไม MEDIANX รวม BLANK แต่ MEDIAN ไม่

เนื่องจาก MEDIANX เป็น iterator function ที่เหมาะสำหรับ expressions ที่ซับซ้อน บางครั้ง expression ของคุณอาจส่งคืน BLANK ตั้งใจหรือไม่ตั้งใจ MEDIANX รักษา BLANK ไว้ในสถิติจึงเป็นพฤติกรรมปกติของ iterator functions (เช่น SUMX, AVERAGEX) ส่วน MEDIAN เป็นการรวม aggregate ที่ขัดเกาะ BLANK

MEDIANX กับ CALCULATE/Filter Context ทำงานอย่างไร

MEDIANX ประเมิน Expression ในแต่ละแถว ซึ่งหมายถึง row context นี่เป็นจุดแข็งของ iterator function บริบทแถว (row context) ให้ acccess ไปยัง values ของแถวนั้นเท่านั้น ถ้าต้องการกำหนด filter สำหรับตาราง ใช้ FILTER() เข้ากับ MEDIANX เช่น MEDIANX(FILTER(Sales, Sales[Year]=2024), Sales[Amount]) ซึ่ง row context จาก FILTER จะนำไปสู่การประเมิน Amount สำหรับแถวที่ 2024 เท่านั้น

ใช้ MEDIANX ในหลายแถว (เช่น grouping) ได้ไหม

ได้ แต่ต้องมานี้เล็กน้อย MEDIANX คำนวณค่า single median สำหรับชุด rows ถ้าต้องการ median ต่อ category ต้องใช้ SUMPRODUCT + FILTER หรือ วิธีอื่นเช่น SUMMARIZECOLUMNS ผมแนะนำให้ใช้วิธี grouping ด้วยการคำนวณด้านหน้า (เช่น pivot table) แล้วค่อย MEDIANX บนผลลัพธ์

Resources & Related

Additional Notes

MEDIANX เป็น iterator function ที่หาค่ามัธยฐาน (50th percentile) ของนิพจน์ที่คำนวณในแต่ละแถว มันทำงานโดยประเมิน Expression สำหรับแต่ละแถวในตาราง แล้วจึงหาค่ากลางของผลลัพธ์ทั้งหมด

ที่เจ๋งของ MEDIANX คือมันเป็น iterator – คุณสามารถคำนวณอะไรก็ได้ก่อนหาค่าเฉลี่ย เช่น Quantity * Price, Discount Amount, หรือแม้แต่ RELATED columns จากตารางอื่น และ MEDIANX รวม BLANK ในการคำนวณ (ต่างจาก MEDIAN ที่ละเว้น BLANK) ซึ่งมีความสำคัญเมื่อข้อมูลไม่สมบูรณ์

ส่วนตัวผมถือว่า MEDIANX เป็นเครื่องมือการวิเคราะห์ที่ดีกว่า AVERAGE ในสถานการณ์ที่มี outliers เพราะ median ไม่ว่อกว่าด้วยค่าเอกโพท ใช้มันเมื่อต้องการค่ากลางที่ robust มากขึ้น

Leave a Reply

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