Thep Excel

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

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

fx
=MAXX(<table>, <expression>)

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
table table ตาราง (หรือผลลัพธ์ตาราง) ที่ต้องการไล่ทีละแถว
expression scalar นิพจน์ที่ต้องการประเมินในแต่ละแถว และต้องได้ผลเป็นค่าสเกลาร์

Additional Notes

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

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

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

How it works

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

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

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

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

Examples

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

MAXX คำนวณ Quantity * UnitPrice สำหรับทุกแถวใน Sales แล้วคืนค่าที่มากที่สุดจากทั้งหมด

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

ผลลัพธ์9999.00 (ยอดต่อบรรทัดที่สูงที่สุด)
ตัวอย่างที่ 2: หาค่าสูงสุดจากข้อมูลที่ถูกกรองMax Sale By Region = MAXX( FILTER(Sales, Sales[Region] = "Central"), Sales[SalesAmount] + Sales[Freight] )

ใช้ FILTER เพื่อจำกัดตาราง แล้ว MAXX ประเมินนิพจน์เฉพาะแถวที่เข้าเงื่อนไขเท่านั้น

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

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

ใช้ RELATED เพื่อดึงข้อมูลจากตาราง Products สำหรับแต่ละแถวของ Sales ก่อนหาค่าสูงสุด

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

ผลลัพธ์5000.00 (ราคาสินค้าสูงสุด)
ตัวอย่างที่ 4: หาค่าสูงสุดจากคำนวณหลายขั้นMax Profit Per Sale = MAXX( Sales, (Sales[SalesAmount] – Sales[CostAmount]) * Sales[ProfitMargin] )

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

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

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

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

ฟังก์ชันนี้MAXXAggregation
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 และข้ามข้อความที่ไม่ใช่ตัวเลข ใช้กับคอลัมน์ที่มีทั้งตัวเลขและค่าตรรกะเพื่อประเมินค่ามากสุดอย่างสอดคล้อง

MIN

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

MINA

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

MINX

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

Table manipulation (1)
CURRENTGROUP

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

Comments

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