Thep Excel

MAXX – หาค่ามากที่สุดจากนิพจน์แบบไล่ทีละแถว

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

=MAXX(<table>, <expression>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
6/10

Difficulty
5/10

Usefulness
6/10

Syntax & Arguments

=MAXX(<table>, <expression>)

Argument Type Required Default Description
table table Yes ตาราง (หรือผลลัพธ์ตาราง) ที่ต้องการไล่ทีละแถว
expression scalar Yes นิพจน์ที่ต้องการประเมินในแต่ละแถว และต้องได้ผลเป็นค่าสเกลาร์

How it works

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

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

หาค่าสูงสุดจากสูตรหลายคอลัมน์

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

Examples

ตัวอย่างที่ 1: หาค่าสูงสุดของยอดต่อบรรทัด
Max Line Amount = MAXX( Sales, Sales[Quantity] * Sales[UnitPrice] )
MAXX คำนวณ Quantity * UnitPrice สำหรับทุกแถวใน Sales แล้วคืนค่าที่มากที่สุดจากทั้งหมด
DAX Formula:

Max Line Amount =
MAXX(
    Sales,
    Sales[Quantity] * Sales[UnitPrice]
)

Result:

9999.00 (ยอดต่อบรรทัดที่สูงที่สุด)

ตัวอย่างที่ 2: หาค่าสูงสุดจากข้อมูลที่ถูกกรอง
Max Sale By Region = MAXX( FILTER(Sales, Sales[Region] = "Central"), Sales[SalesAmount] + Sales[Freight] )
ใช้ FILTER เพื่อจำกัดตาราง แล้ว MAXX ประเมินนิพจน์เฉพาะแถวที่เข้าเงื่อนไขเท่านั้น
DAX Formula:

Max Sale By Region =
MAXX(
    FILTER(Sales, Sales[Region] = "Central"),
    Sales[SalesAmount] + Sales[Freight]
)

Result:

2450.50 (ค่าการขายรวมค่าขนส่งสูงสุดในภาคกลาง)

ตัวอย่างที่ 3: หาค่าสูงสุดของราคาสินค้าเมื่อเชื่อมตารางอื่น
Max Product Price = MAXX( Sales, RELATED(Products[ListPrice]) ) // Sales เชื่อมกับ Products ผ่าน ProductID
ใช้ RELATED เพื่อดึงข้อมูลจากตาราง Products สำหรับแต่ละแถวของ Sales ก่อนหาค่าสูงสุด
DAX Formula:

Max Product Price =
MAXX(
    Sales,
    RELATED(Products[ListPrice])
)
// Sales เชื่อมกับ Products ผ่าน ProductID

Result:

5000.00 (ราคาสินค้าสูงสุด)

ตัวอย่างที่ 4: หาค่าสูงสุดจากคำนวณหลายขั้น
Max Profit Per Sale = MAXX( Sales, (Sales[SalesAmount] - Sales[CostAmount]) * Sales[ProfitMargin] )
expression สามารถมีการคำนวณหลายขั้น ไม่ต้องเป็นการคำนวณธรรมดา MAXX จะประเมินนิพจน์ทั้งหมดสำหรับทุกแถว
DAX Formula:

Max Profit Per Sale =
MAXX(
    Sales,
    (Sales[SalesAmount] - Sales[CostAmount]) * Sales[ProfitMargin]
)

Result:

15750.75 (กำไรต่อบรรทัดที่สูงที่สุด)

FAQs

MAXX ต่างจาก MAX อย่างไร?

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

MAXX ต่างจาก MINX อย่างไร?

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

MAXX มีผลต่อประสิทธิภาพหรือไม่?

MAXX เป็นฟังก์ชันแบบ iterator จึงอาจช้ากว่าแบบสรุปคอลัมน์โดยตรง หากต้องการแค่ค่าสูงสุดของคอลัมน์ ให้ใช้ MAX กับคอลัมน์แทน บนตารางขนาดใหญ่ (หลักแสน) MAXX อาจใช้เวลานานขึ้น

ใช้ MAXX ใน Calculated Column ได้หรือไม่?

ได้ แต่ต้องระวัง MAXX ใน Calculated Column จะสร้าง Row Context ซึ่งทำให้นิพจน์ประเมินเหนือกว่า Filter Context ที่กำหนด ควรใช้เมื่อต้องการแถวแรก (ALL) หรือหลีกเลี่ยงหากมี Context ที่ซับซ้อน

ค่า Blank ใน MAXX จะถูกประมวลผลอย่างไร?

MAXX จะข้าม (skip) ค่า Blank และคืนค่าที่มากที่สุดจากค่าที่ไม่ใช่ Blank หากทุกค่าเป็น Blank ผลลัพธ์จะเป็น Blank

ต้องใช้ FILTER ทุกครั้งหรือไม่?

ไม่ ถ้าต้องการประเมินทุกแถวของตาราง ใช้ MAXX(TableName, expression) ตรง ๆ ใช้ FILTER เมื่อต้องการจำกัดแถวที่ประเมิน

Resources & Related

Additional Notes

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

ที่เจ๋งคือ MAXX จะสร้าง Row Context ขณะที่ประเมิน expression ต่อแถว ซึ่งต่างจาก MAX ที่ต้องทำงานกับคอลัมน์โดยตรง ท่านจึงใช้ MAXX ได้เมื่อต้องการประเมินคำนวณจำนวนเชิงซ้อน

ส่วนตัวผมคิดว่า MAXX เป็นตัวช่วยเก่งมาก ถ้าเข้าใจ Row Context กับ Filter Context ให้ดี 😎

Leave a Reply

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