Thep Excel

SUMX – หาผลรวมแบบวนลูป (Iterator Function)

วนลูปคำนวณสูตรในแต่ละแถว แล้วนำผลรวมมารวมกัน

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

=SUMX(Table, Expression)

By ThepExcel AI Agent
1 December 2025

Syntax & Arguments

=SUMX(Table, Expression)

Argument Type Required Default Description
Table table Yes ตารางที่ต้องการให้ฟังก์ชันเข้าไปวนลูป (อาจเป็นชื่อตาราง หรือฟังก์ชันที่คืนค่าเป็นตาราง เช่น FILTER)
Expression scalar Yes สูตรหรือนิพจน์ที่ต้องการให้คำนวณในแต่ละแถว (เช่น [Price] * [Quantity])

How it works

การคำนวณยอดขายรวม (Price x Quantity)

คำนวณยอดขายโดยเอา ราคาคูณจำนวน ในแต่ละแถวก่อน แล้วค่อยรวม ซึ่ง SUM ปกติทำไม่ได้ถ้าไม่มีคอลัมน์ผลลัพธ์ค้างไว้

การคำนวณบนตารางที่ถูกกรอง

ใช้ร่วมกับ FILTER เพื่อหาผลรวมเฉพาะข้อมูลที่ตรงเงื่อนไขซับซ้อน

การหาค่าเฉลี่ยถ่วงน้ำหนัก

ใช้ SUMX คำนวณผลรวมของ (ค่า x น้ำหนัก) เพื่อนำไปหารด้วยผลรวมน้ำหนัก

Examples

ตัวอย่างที่ 1: คำนวณยอดขายรวม (Total Sales)

ฟังก์ชันจะวนไปที่ตาราง Sales ทีละแถว นำค่าในคอลัมน์ Quantity คูณกับ UnitPrice ของแถวนั้นๆ พักค่าไว้ แล้วทำแถวถัดไปจนครบ จึงนำผลคูณทั้งหมดมารวกมันเป็นยอดสุดท้าย
DAX Formula:

Total Sales = SUMX( Sales, Sales[Quantity] * Sales[UnitPrice] )

Result:

ผลรวมยอดขายทั้งหมด

ตัวอย่างที่ 2: หาผลรวมเฉพาะสินค้าสีแดง (ใช้ร่วมกับ FILTER)

FILTER จะสร้างตารางจำลองที่มีเฉพาะสินค้าสีแดงก่อน จากนั้น SUMX จะวนลูปเฉพาะในตารางจำลองนั้นเพื่อคำนวณยอดขาย
DAX Formula:

Red Sales = SUMX( 
    FILTER(Sales, RELATED('Product'[Color]) = "Red"), 
    Sales[Quantity] * Sales[UnitPrice] 
)

Result:

ยอดขายรวมเฉพาะสินค้าสีแดง

ตัวอย่างที่ 3: ใช้กับ Measure อื่น

เราสามารถใช้ Measure ที่สร้างไว้แล้วมาเป็น Expression ใน SUMX ได้ แต่นิยมใช้ SUMX กับคอลัมน์ตรงๆ หรือสูตรคณิตศาสตร์มากกว่าเพื่อประสิทธิภาพ
DAX Formula:

Total Margin = SUMX( Sales, [Total Sales] - [Total Cost] )

Result:

ผลรวมกำไร

FAQs

ทำไมไม่ใช้ SUM(Sales[Amount]) ไปเลย?

ถ้าคุณมีคอลัมน์ Amount (ยอดเงิน) อยู่แล้ว การใช้ SUM จะเร็วกว่า แต่ถ้าคุณมีแค่คอลัมน์ Quantity และ Price แยกกัน คุณต้องใช้ SUMX เพื่อคูณกันก่อนรวม หรือไม่ก็ต้องสร้าง Calculated Column ใหม่ซึ่งจะเปลืองพื้นที่ไฟล์

SUMX ช้ากว่า SUM ไหม?

โดยทั่วไป SUMX จะใช้ทรัพยากรมากกว่า SUM เล็กน้อยเพราะต้องประมวลผลทีละแถว แต่ถ้าใช้อย่างถูกวิธี (เช่น ไม่ใช้ IF ซ้อนกันเยอะๆ ใน Expression) ประสิทธิภาพจะไม่ต่างกันมากใน Data Model ทั่วไป

Resources & Related

Additional Notes

SUMX คือฟังก์ชันประเภท Iterator ที่ทรงพลังมากใน DAX มันไม่ได้แค่หาผลรวมของคอลัมน์เหมือน SUM ปกติ แต่จะ “วนลูป” ไปทีละแถวในตารางที่กำหนด เพื่อคำนวณสูตร (Expression) ในแต่ละแถวก่อน แล้วค่อยนำผลลัพธ์ทั้งหมดมารวมกัน

SUM vs SUMX ต่างกันอย่างไร?

SUM: ใช้รวมค่าใน 1 คอลัมน์เท่านั้น (ทำงานในระดับคอลัมน์)
SUMX: ใช้เมื่อต้องการคำนวณสูตรที่ซับซ้อนในระดับแถว (Row Context) ก่อนที่จะรวมผลลัพธ์ เช่น การเอา ราคา x จำนวน ในแต่ละแถวก่อน แล้วค่อยรวมยอดเงินทั้งหมด

Leave a Reply

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