Thep Excel

MINX – หาค่าน้อยที่สุดจากนิพจน์แบบไล่ทีละแถว

MINX ประเมินนิพจน์สำหรับทุกแถวของตาราง แล้วคืนค่าที่น้อยที่สุด ต่างจาก MIN ที่ใช้กับคอลัมน์โดยตรง MINX เหมาะกับการหาค่าต่ำสุดจากค่าที่คำนวณต่อแถว เช่น (Quantity × UnitPrice)

=MINX(<table>, <expression>, [<variant>])

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
6/10

Difficulty
5/10

Usefulness
6/10

Syntax & Arguments

=MINX(<table>, <expression>, [<variant>])

Argument Type Required Default Description
table table Yes ตาราง (หรือผลลัพธ์ตาราง) ที่ต้องการไล่ทีละแถว เช่น Sales, Transactions หรือผลลัพธ์จาก FILTER
expression scalar Yes นิพจน์ที่ต้องการประเมินในแต่ละแถว ต้องได้ผลเป็นค่าสเกลาร์ (ตัวเลข วันที่ ข้อความ) เพื่อเปรียบเทียบและหาค่าต่ำสุด
variant boolean Optional FALSE ถ้าเป็น TRUE จะเปรียบเทียบค่าโดยไม่สนใจชนิดข้อมูลและคืนค่าต่ำสุดตามลำดับตัวอักษร/ตัวเลข (ORDER BY ASC) เมื่อมีชนิดข้อมูลผสม เช่น ข้อความกับตัวเลข ค่า Default คือ FALSE ซึ่งเปรียบเทียบเฉพาะตัวเลข

How it works

หาค่าต่ำสุดจากมูลค่าแบบคำนวณต่อแถว

เช่น ยอดต่อบรรทัด = จำนวน * ราคาต่อหน่วย แล้วหาแถวที่ต่ำสุด

หาค่าต่ำสุดจากสูตรที่ใช้หลายคอลัมน์

เช่น คะแนนรวม = คะแนน1 + คะแนน2 แล้วหาค่าต่ำสุด

Examples

ตัวอย่างที่ 1: หาค่ายอดต่อบรรทัดต่ำสุด
Minimum Line Amount = MINX( Sales, Sales[Quantity] * Sales[UnitPrice] )
MINX คำนวณ Quantity × UnitPrice สำหรับทุกแถวใน Sales Table แล้วส่งคืนค่าที่น้อยที่สุด ลูกค้าบางคนอาจซื้อเพียงชิ้นเดียวจากสินค้าราคาถูก ตรงนี้แหละ MINX มีประโยชน์มากครับ 💡
DAX Formula:

Minimum Line Amount =
MINX(
    Sales,
    Sales[Quantity] * Sales[UnitPrice]
)

Result:

12.50 (หากเป็นยอดต่อบรรทัดที่น้อยที่สุดในตาราง)

ตัวอย่างที่ 2: หาส่วนลดต่ำสุดของการขายทั้งปี
Minimum Discount % = MINX( Sales, Sales[DiscountPct] )
แม้จะให้ expression เป็นคอลัมน์ตรง ๆ ก็ได้ (แต่ MIN จะเร็วกว่า) การใช้ MINX ในแบบนี้มีประโยชน์ในโครงสร้างขนาดใหญ่เพราะว่า สามารถเปลี่ยนเป็นนิพจน์ที่ซับซ้อนได้ง่าย เช่น MINX(Sales, Sales[DiscountPct] * Sales[Amount]) โดยไม่ต้องเขียนใหม่ทั้งหมด
DAX Formula:

Minimum Discount % =
MINX(
    Sales,
    Sales[DiscountPct]
)

Result:

0% (หรือค่าเปอร์เซ็นต์ส่วนลดต่ำสุดในข้อมูล)

ตัวอย่างที่ 3: หาคะแนนรวมต่ำสุดจากสอบหลายวิชา
Min Total Score = MINX( StudentScores, StudentScores[Math] + StudentScores[English] + StudentScores[Science] )
MINX ประเมินการบวกคะแนนทั้งสามวิชาของทุกคนในตาราง ส่วนตัวผมใช้แบบนี้บ่อยตอนต้องการดูว่าใครมีผลการเรียนด้อยที่สุด ✨
DAX Formula:

Min Total Score =
MINX(
    StudentScores,
    StudentScores[Math] + StudentScores[English] + StudentScores[Science]
)

Result:

45 (สมมติว่านี่คือคะแนนรวมต่ำสุดของนักเรียน)

ตัวอย่างที่ 4: หาราคาต่ำสุดของสินค้าใน Category ที่เลือก (ใช้ FILTER)
Min Product Price in Category = MINX( FILTER( Products, Products[Category] = "Electronics" ), Products[UnitPrice] )
เมื่อต้องการหาค่าต่ำสุดจากข้อมูลที่ filtered ให้ใช้ FILTER ร่วมกับ MINX เหมือนในตัวอย่างนี้ ช่วยให้เราหลีกเลี่ยงการคำนวณทั้งคอลัมน์โดยไม่จำเป็น
DAX Formula:

Min Product Price in Category =
MINX(
    FILTER(
        Products,
        Products[Category] = "Electronics"
    ),
    Products[UnitPrice]
)

Result:

99.99 (ราคาต่ำสุดของสินค้าในหมวด Electronics)

ตัวอย่างที่ 5: หาต้นทุนเริ่มต้นต่ำสุดจากรหัสสินค้า (ใช้ RELATED)
Min Product Cost = MINX( Sales, RELATED(Products[Cost]) )
MINX ทำงานในแถวคอนเท็กซ์ (Row Context) ซึ่งช่วยให้ RELATED ทำงานได้ เราจึงสามารถหาค่าต่ำสุดจากตารางที่เกี่ยวข้อง (Related Table) ได้ โดยไม่ต้อง CALCULATE หรือ Filter
DAX Formula:

Min Product Cost =
MINX(
    Sales,
    RELATED(Products[Cost])
)

Result:

5.50 (ต้นทุนต่ำสุดของสินค้าที่ขายได้)

FAQs

เมื่อไรควรใช้ MINX แทน MIN?

ใช้ MIN เมื่อค่าที่ต้องหาต่ำสุดอยู่ในคอลัมน์เดี่ยว เช่น MIN(Sales[Price]) แต่ใช้ MINX เมื่อต้องคำนวณก่อน เช่น MINX(Sales, Sales[Qty] * Sales[Price]) ส่วนตัวผมมักใช้ MINX เพื่อให้โค้ดอ่านชัดเจนว่า ‘ทีละแถว’ ครับ

MINX กับ MAXX ต่างกันยังไง?

MINX หาค่าน้อยที่สุด ส่วน MAXX หาค่ามากที่สุด ความเหมือนกันคือทั้งคู่เป็น Iterator ที่ประเมินนิพจน์ต่อแถว ถ้าต้องการเปรียบเทียบกับตัวเลขสูงสุดก็ใช้ MAXX ได้เลย

ถ้าตารางว่างจะเกิดอะไรขึ้น?

MINX จะคืนค่า BLANK (ว่าง) ถ้าตารางไม่มีแถวเลย ส่วนถ้ามีแถวแต่ expression คำนวณได้ BLANK ก็จะข้ามไปหาค่าถัดไป (BLANK จะถูกข้ามเสมอ)

Expression สามารถใช้ RELATED ได้มั้ย?

ได้ครับ MINX ทำงานแบบ Row Context ซึ่งเหมาะสำหรับ RELATED() ตัวอย่างเช่น MINX(Sales, RELATED(Products[Price])) ก็สามารถใช้ได้เลย

MINX รองรับข้อมูล Text ได้มั้ย?

ได้ครับ แต่ข้อความจะเปรียบเทียบตามลำดับตัวอักษร (Alphabetical Order) ถ้าต้องการจัดการข้อมูล Mixed Type ให้ใช้ variant = TRUE

MINX ใช้กับ DirectQuery ได้มั้ย?

MINX สามารถใช้ในเมจเชอร์ (Measures) ได้ แต่ไม่สามารถใช้ในคำนวณคอลัมน์ (Calculated Columns) หรือ RLS Rules หากเป็น DirectQuery mode ตัวอื่น ๆ ใช้ได้ปกติครับ

ทำไม MINX ช้ากว่า MIN ในบางครั้ง?

เพราะ MINX เป็น Iterator – มันประเมินนิพจน์ทีละแถว ถ้ามีแถวจำนวนมาก (หลักแสน) มันจะช้า ใช้ MIN (ฟังก์ชันอัตโนมัติ) เมื่อเป็นคอลัมน์เดี่ยว หรือลอง VAR + FILTER เพื่อลดจำนวนแถวก่อน

Resources & Related

Additional Notes

MINX เป็นฟังก์ชัน Iterator ที่ไล่ประเมินนิพจน์ทีละแถวในตาราง แล้วคืนค่าสเกลาร์ที่น้อยที่สุดจากผลลัพธ์ทั้งหมด ต่างจาก MIN ที่ทำงานบนคอลัมน์เดี่ยวในฟิลเตอร์คอนเท็กซ์ MINX สร้างแถวคอนเท็กซ์เพื่อประเมินนิพจน์ซับซ้อน

ที่เจ๋งคือ MINX ช่วยเวลาค่าที่ต้องการหาต่ำสุดไม่ได้อยู่ในคอลัมน์ตรง ๆ แต่เป็นค่าที่ต้องคำนวณต่อแถว เช่น จำนวน * ราคาต่อหน่วย หรือคะแนนรวมจากหลายคอลัมน์ มันเหมือนการสอบถาม “ยอดการซื้อต่ำสุดของลูกค้าแต่ละราย” – ข้อมูลนั้นไม่ได้อยู่ในตารางอยู่แล้ว ต้องคำนวณ

ส่วนตัวผมแนะนำให้ใช้ MINX เมื่อต้องการหาค่าต่ำสุดของนิพจน์ที่คำนวณ แต่ต้องจำไว้ว่าเนื่องจากเป็น Iterator (ประเมินทีละแถว) ตารางที่ใหญ่มากอาจช้า ถ้าเป็นคอลัมน์เดี่ยวให้ใช้ MIN จะเร็วกว่า 😎

Leave a Reply

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