Thep Excel

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

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

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

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

อัปเดต 13 December 2025

Syntax & Arguments

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

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

Additional Notes

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

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

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

How it works

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

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

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

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

Examples

ตัวอย่างที่ 1: หาค่ายอดต่อบรรทัดต่ำสุดMinimum Line Amount = MINX( Sales, Sales[Quantity] * Sales[UnitPrice] )

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

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

ผลลัพธ์12.50 (หากเป็นยอดต่อบรรทัดที่น้อยที่สุดในตาราง)
ตัวอย่างที่ 2: หาส่วนลดต่ำสุดของการขายทั้งปีMinimum Discount % = MINX( Sales, Sales[DiscountPct] )

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

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

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

MINX ประเมินการบวกคะแนนทั้งสามวิชาของทุกคนในตาราง ส่วนตัวผมใช้แบบนี้บ่อยตอนต้องการดูว่าใครมีผลการเรียนด้อยที่สุด ✨

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

ผลลัพธ์45 (สมมติว่านี่คือคะแนนรวมต่ำสุดของนักเรียน)
ตัวอย่างที่ 4: หาราคาต่ำสุดของสินค้าใน Category ที่เลือก (ใช้ FILTER)Min Product Price in Category = MINX( FILTER( Products, Products[Category] = "Electronics" ), Products[UnitPrice] )

เมื่อต้องการหาค่าต่ำสุดจากข้อมูลที่ filtered ให้ใช้ FILTER ร่วมกับ MINX เหมือนในตัวอย่างนี้ ช่วยให้เราหลีกเลี่ยงการคำนวณทั้งคอลัมน์โดยไม่จำเป็น

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

ผลลัพธ์99.99 (ราคาต่ำสุดของสินค้าในหมวด Electronics)
ตัวอย่างที่ 5: หาต้นทุนเริ่มต้นต่ำสุดจากรหัสสินค้า (ใช้ RELATED)Min Product Cost = MINX( Sales, RELATED(Products[Cost]) )

MINX ทำงานในแถวคอนเท็กซ์ (Row Context) ซึ่งช่วยให้ RELATED ทำงานได้ เราจึงสามารถหาค่าต่ำสุดจากตารางที่เกี่ยวข้อง (Related Table) ได้ โดยไม่ต้อง CALCULATE หรือ Filter

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

ผลลัพธ์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

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

ฟังก์ชันนี้MINXAggregation
Aggregation (6)
AVERAGEX

AVERAGEX เป็น Iterator Function ที่วนลูปตารางทีละแถว คำนวณ Expression แล้วนำผลลัพธ์มาหาค่าเฉลี่ย เหมาะสำหรับกรณีที่ต้องการเฉลี่ยค่าที่คำนวณได้ เช่น ราคา×จำนวน หรือค่าเฉลี่ยของ Measure ในแต่ละกลุ่ม

MAX

MAX คืนค่าสูงสุดจากคอลัมน์ภายใต้ filter context หรือเปรียบเทียบสองค่าสเกลาร์แล้วเลือกค่าที่มากกว่า ทำงานกับ numeric, date และ text columns โดย scan ทุก row ที่ผ่าน filter แล้วเลือกค่าสูงสุด เหมาะสำหรับ measures และ calculated columns (ต้อง wrap ด้วย CALCULATE)

MAXA

MAXA คืนค่ามากสุดโดยตีความ TRUE=1, FALSE/BLANK=0 และข้ามข้อความที่ไม่ใช่ตัวเลข ใช้กับคอลัมน์ที่มีทั้งตัวเลขและค่าตรรกะเพื่อประเมินค่ามากสุดอย่างสอดคล้อง

MAXX

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

MIN

MIN คืนค่าน้อยที่สุดจากคอลัมน์ภายใต้ filter context ปัจจุบัน หรือเปรียบเทียบสองค่า scalar expression แล้วคืนค่าที่น้อยกว่า รองรับตัวเลข วันที่ และข้อความ ทำงานภายใต้ filter context ทำให้ค่าที่หาได้จะถูกกรองตาม slicer หรือ visual filter อัตโนมัติ เหมาะกับการหาราคาต่ำสุด วันที่เร็วที่สุด หรือการตั้งเพดาน (cap) ให้กับค่าคำนวณ

MINA

MINA คืนค่าน้อยสุดโดยพิจารณา TRUE เป็น 1, FALSE/BLANK เป็น 0 และข้ามข้อความที่ไม่ใช่ตัวเลข ใช้กับคอลัมน์ที่มีตัวเลขและค่าตรรกะปนกันเพื่อหาค่าน้อยสุดอย่างมีบริบท

Time Intelligence (2)
STARTOFMONTH

STARTOFMONTH คืนวันแรกของเดือนเป็นตาราง 1 แถว ใช้กับการวัดที่ขึ้นต่อจุดเวลา เช่น ยอดคงเหลือ บัญชี หรือสินค้าคงคลัง

STARTOFYEAR

STARTOFYEAR คืนตาราง 1 แถวที่มีวันที่วันแรกของปีในบริบทปัจจุบัน ใช้สำหรับ semi-additive measure เช่น inventory balance หรือเปรียบเทียบ year-to-date

Table manipulation (1)
CURRENTGROUP

CURRENTGROUP คืนตารางย่อยของกลุ่มปัจจุบันและใช้ได้เฉพาะภายใน GROUPBY ช่วยให้คำนวณค่าที่อิงแถวภายในกลุ่มได้ เช่น SUMX/COUNTROWS/ MAXX ของกลุ่มนั้น

Comments

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