Thep Excel

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

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

fx
=SUM(<column>)

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

อัปเดต 14 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
column column คอลัมน์ตัวเลขที่ต้องการรวมค่า ต้องอ้างอิงในรูปแบบ Table[Column] และต้องเป็น numeric column

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 ต่อแถวแล้วจึงรวมผลลัพธ์

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 ทันที

fx
Total Sales =
SUM(Sales[Amount])

ผลลัพธ์500
ตัวอย่างที่ 2: รวมเฉพาะหมวดที่ต้องการด้วย CALCULATECoffee Sales = CALCULATE( SUM(Sales[Amount]), Product[Category] = "Coffee" )

CALCULATE เพิ่ม filter ให้คำนวณเฉพาะหมวด Coffee เช่นมียอด 500 + 750 = 1,250

ตัวอย่างนี้ช่วยให้ SUM ทำงานใน filter context ที่กำหนดเอง

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

ผลลัพธ์1,250
ตัวอย่างที่ 3: เปอร์เซ็นต์ของยอดรวมทั้งหมดSales % Total = DIVIDE( SUM(Sales[Amount]), CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS(Product) ) )

ตัวเศษคือยอดขายในบริบทปัจจุบัน ส่วนตัวหารลบ filter ของ Product เพื่อได้ยอดรวมทั้งหมด

แล้วค่อยหารเพื่อได้ % of total ที่ถูกต้อง

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

ผลลัพธ์0.25 (25%)
ตัวอย่างที่ 4: ใช้ SUM ใน Calculated Column (ข้อควรระวัง)Total Sales (Column) = SUM(Sales[Amount])

Calculated column มี row context แต่ SUM ไม่ทำ context transition จึงคืนยอดรวมทั้งตารางให้ทุกแถวเหมือนกัน

ถ้าต้องการคำนวณต่อแถวให้ใช้ expression ของคอลัมน์นั้นโดยตรง หรือใช้ SUMX ตามกรณี

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

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

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

ฟังก์ชันนี้SUMAggregation
Aggregation (6)
AVERAGE

AVERAGE คำนวณค่าเฉลี่ยเลขคณิตของตัวเลขทั้งหมดในคอลัมน์ โดยข้าม blank cells และข้อความ แต่นับค่า 0 เข้าในการคำนวณ ซึ่งทำให้ค่าเฉลี่ยอาจต่ำลงถ้ามีค่า 0 จำนวนมาก ทำงานภายใต้ filter context ปัจจุบันและทำ context transition ใน calculated column ทำให้สามารถอ้างอิงคอลัมน์จากตารางอื่นผ่าน relationship ได้

DISTINCTCOUNT

DISTINCTCOUNT นับจำนวนค่าที่แตกต่างกันทั้งหมดในคอลัมน์ รวมถึง BLANK values ถ้าไม่มีแถวข้อมูล จะคืนค่า BLANK

MAX

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

MIN

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

PRODUCT

PRODUCT คูณค่าทั้งหมดในคอลัมน์ (ละเว้น BLANK และข้อความ) ใช้เมื่อจำเป็นต้องคูณค่าแบบรวม เช่น คูณอัตราเติบโตหรือสัดส่วนที่ต้องรวมผลคูณ

SUMX

SUMX เป็น iterator function ที่ทรงพลังใน DAX ออกแบบมาเพื่อวนลูปทีละแถวในตารางที่กำหนด แล้วคำนวณ expression ที่ซับซ้อนสำหรับแต่ละแถวก่อนนำผลลัพธ์ทั้งหมดมารวมกัน ต่างจาก SUM ที่รวมเฉพาะค่าใน column เดียว SUMX สร้าง row context สำหรับแต่ละแถว ทำให้สามารถคำนวณ expression อย่าง Quantity × Price หรือใช้ RELATED ดึงข้อมูลข้ามตารางได้ มีกลไก context transition อัตโนมัติเมื่อเจอ measure ในนั้น เหมาะสำหรับการคำนวณซับซ้อนระดับแถวข้อมูล ประหยัดพื้นที่ model เพราะไม่ต้องสร้าง calculated column แต่ช้ากว่า SUM และไม่รองรับ DirectQuery mode ใน calculated columns หรือ RLS rules

Filter (1)
CALCULATE

CALCULATE เป็นฟังก์ชันหลักที่สำคัญที่สุดใน DAX ใช้สำหรับ evaluate expression ภายใต้ filter context ที่ถูกปรับเปลี่ยน สามารถเพิ่มตัวกรองใหม่ ลบตัวกรองเดิม หรือแทนที่ filter ที่มีอยู่ได้ รองรับทั้ง Boolean expression และ table expression เป็น filter arguments พร้อม filter modifier functions เช่น REMOVEFILTERS, ALL, ALLEXCEPT, KEEPFILTERS เพื่อควบคุมการกรองอย่างละเอียด มีพฤติกรรมพิเศษคือ context transition ที่เปลี่ยน row context เป็น filter context โดยอัตโนมัติ ทำให้เป็นเครื่องมือหลักในการสร้าง measure ที่ซับซ้อนและ calculated column ที่ต้องใช้ aggregation

Math and Trig (1)
CURRENCY

CURRENCY แปลงค่าตัวเลขให้เป็นชนิด Currency โดยเก็บเลขทศนิยมเพียง 4 ตำแหน่ง เหมาะสำหรับการคำนวณค่าเงินที่ต้องความแม่นยำในการปัดเศษ

Comments

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