Thep Excel

SUM – รวมค่าตัวเลขจากคอลัมน์ (DAX)

SUM รวมค่าตัวเลขทั้งหมดจากคอลัมน์เดียวภายใต้ filter context ปัจจุบัน ข้ามค่า BLANK และข้อความ แต่รวมค่า 0 หากต้องรวมจาก expression ให้ใช้ SUMX แทน

=SUM(<column>)

By ThepExcel AI Agent
14 December 2025

Function Metrics


Popularity
10/10

Difficulty
2/10

Usefulness
10/10

Syntax & Arguments

=SUM(<column>)

Argument Type Required Default Description
column column Yes คอลัมน์ตัวเลขที่ต้องการรวมค่า ต้องอ้างอิงในรูปแบบ Table[Column] และต้องเป็น numeric column

How it works

ยอดขายรวม (Total Sales)

สร้าง measure ยอดขายรวมสำหรับรายงานหรือ KPI หลัก

ยอดรวมตามหมวดหรือช่วงเวลา

ใช้ SUM ใน visual ที่มีตัวกรองจาก Category หรือ Date เพื่อดูยอดรวมตามบริบท

คำนวณเปอร์เซ็นต์ของยอดรวม

นำ SUM มาเป็นตัวตั้ง แล้วใช้ CALCULATE ร่วมกับ REMOVEFILTERS เพื่อหายอดรวมทั้งหมดสำหรับทำ % of total

Examples

ตัวอย่างที่ 1: ยอดขายรวมพื้นฐาน
Total Sales = SUM(Sales[Amount])
สมมติ Sales[Amount] มีค่า 120, 180, 200 รวมกันได้ 500
.
ถ้ามี slicer กรองปีหรือภูมิภาค ผลลัพธ์จะเปลี่ยนตาม filter context ทันที
DAX Formula:

Total Sales = 
SUM(Sales[Amount])

Result:

500

ตัวอย่างที่ 2: รวมเฉพาะหมวดที่ต้องการด้วย CALCULATE
Coffee Sales = CALCULATE( SUM(Sales[Amount]), Product[Category] = "Coffee" )
CALCULATE เพิ่ม filter ให้คำนวณเฉพาะหมวด Coffee เช่นมียอด 500 + 750 = 1,250
.
ตัวอย่างนี้ช่วยให้ SUM ทำงานใน filter context ที่กำหนดเอง
DAX Formula:

Coffee Sales = 
CALCULATE(
    SUM(Sales[Amount]),
    Product[Category] = "Coffee"
)

Result:

1,250

ตัวอย่างที่ 3: เปอร์เซ็นต์ของยอดรวมทั้งหมด
Sales % Total = DIVIDE( SUM(Sales[Amount]), CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS(Product) ) )
ตัวเศษคือยอดขายในบริบทปัจจุบัน ส่วนตัวหารลบ filter ของ Product เพื่อได้ยอดรวมทั้งหมด
.
แล้วค่อยหารเพื่อได้ % of total ที่ถูกต้อง
DAX Formula:

Sales % Total = 
DIVIDE(
    SUM(Sales[Amount]),
    CALCULATE(
        SUM(Sales[Amount]),
        REMOVEFILTERS(Product)
    )
)

Result:

0.25 (25%)

ตัวอย่างที่ 4: ใช้ SUM ใน Calculated Column (ข้อควรระวัง)
Total Sales (Column) = SUM(Sales[Amount])
Calculated column มี row context แต่ SUM ไม่ทำ context transition จึงคืนยอดรวมทั้งตารางให้ทุกแถวเหมือนกัน
.
ถ้าต้องการคำนวณต่อแถวให้ใช้ expression ของคอลัมน์นั้นโดยตรง หรือใช้ SUMX ตามกรณี
DAX Formula:

=Total Sales (Column) = 
SUM(Sales[Amount])

Result:

500 (ค่าเดียวกันทุกแถว)

FAQs

SUM ต่างจาก SUMX อย่างไร?

SUM รวมค่าจากคอลัมน์ที่มีอยู่แล้วเท่านั้น ส่วน SUMX จะประเมิน expression ต่อแถวก่อนแล้วค่อยรวมผลลัพธ์

SUM รวมหลายคอลัมน์พร้อมกันได้ไหม?

ไม่ได้ SUM รับได้เพียงคอลัมน์เดียว หากต้องรวมหลายคอลัมน์ให้สร้าง measure แยกหรือใช้ SUMX กับ expression

SUM จัดการกับค่า BLANK หรือข้อความอย่างไร?

SUM ข้ามค่า BLANK และข้อความทั้งหมด แต่ยังนับค่า 0 เข้าไปในการรวม

ทำไม SUM ใน calculated column ถึงได้ค่าเดิมทุกแถว?

เพราะ SUM ใช้ filter context แต่ calculated column มีแค่ row context หากไม่ใช้ CALCULATE ผลลัพธ์จะเป็นยอดรวมทั้งตารางเหมือนกันทุกแถว

Resources & Related

Additional Notes

SUM เป็น aggregation function ใน DAX ที่รวมค่าตัวเลขจากคอลัมน์เดียวภายใต้ filter context ปัจจุบัน ใช้บ่อยสำหรับสร้าง measure เช่นยอดขายรวม ยอดต้นทุนรวม หรือยอดรวมตามช่วงเวลาที่ถูกกรอง

SUM ใช้กับอะไรได้บ้าง

  • รับเฉพาะคอลัมน์ตัวเลขในรูปแบบ Table[Column]
  • ข้ามค่า BLANK และข้อความ แต่รวมค่า 0
  • ถ้าไม่มีแถวใน filter context จะคืนค่า BLANK
  • ไม่รับ expression; ถ้าต้องคำนวณต่อแถวให้ใช้ SUMX

ข้อควรระวังเรื่อง Row Context

ใน calculated column จะมี row context แต่ SUM ไม่แปลง row context เป็น filter context ให้อัตโนมัติ ดังนั้นผลลัพธ์มักเป็นยอดรวมเดียวกันทุกแถว ถ้าต้องการคำนวณต่อแถวให้ใช้ CALCULATE หรือใช้ SUMX แทน

เมื่อไหร่ควรใช้ SUMX แทน

ถ้าต้องรวมค่าที่มาจาก expression เช่น Qty * UnitPrice หรือมีการคำนวณต่อแถวก่อนรวม ให้ใช้ SUMX ซึ่งเป็น iterator function ที่จะประเมิน expression ต่อแถวแล้วจึงรวมผลลัพธ์

Leave a Reply

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