Thep Excel

MOVINGAVERAGEค่าเฉลี่ยเคลื่อนที่บน Visual Calculations

MOVINGAVERAGE คำนวณค่าเฉลี่ยเคลื่อนที่ (moving average) บนแกนของ Visual Calculations ในตารางข้อมูล เหมาะสำหรับทำเส้นแนวโน้มที่เรียบขึ้นและลดความผันผวนของข้อมูล

fx
=MOVINGAVERAGE(<column>, <windowSize>[, <includeCurrent>][, <axis>][, <orderBy>][, <blanks>][, <reset>])

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
column column คอลัมน์ที่มีค่าที่ต้องการนำไปคำนวณค่าเฉลี่ยเคลื่อนที่ (เช่น Sales[Amount])
windowSize integer ขนาดของหน้าต่าง (window) ที่ใช้คำนวณค่าเฉลี่ยเคลื่อนที่ ต้องเป็นค่าคงที่ (เช่น 7 = เฉลี่ย 7 จุด/7 แถว/7 วัน)
[includeCurrent]ไม่บังคับ boolean TRUE ระบุว่าจะรวมแถวปัจจุบันในการคำนวณหรือไม่ TRUE = รวม (ค่าเริ่มต้น), FALSE = ไม่รวม (เฉลี่ยจากแถวก่อนหน้า)
[axis]ไม่บังคับ axis แกนเริ่มต้นของ visual แกนการคำนวณ (Rows = ตามแถว, Columns = ตามคอลัมน์) ถ้าไม่ระบุ ใช้แกนเริ่มต้นของ visual
[orderBy]ไม่บังคับ expression ลำดับแสดงผลเริ่มต้น ORDERBY() clause เพื่อระบุลำดับการคำนวณ ใช้เมื่อต้องการเรียงลำดับตามคอลัมน์อื่น
[blanks]ไม่บังคับ enum DEFAULT การจัดการค่าว่าง DEFAULT = ตามลำดับปกติ, FIRST = ค่าว่างอยู่ด้านหน้า, LAST = ค่าว่างอยู่ด้านหลัง
[reset]ไม่บังคับ expression NONE เมื่อไรการคำนวณจะรีเซ็ต NONE = ไม่รีเซ็ต, LOWESTPARENT = รีเซ็ตที่ระดับ parent ต่ำสุด, HIGHESTPARENT = รีเซ็ตที่ระดับ parent สูงสุด, หรือฟิลด์อ้างอิง

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

MOVINGAVERAGE เป็นฟังก์ชัน Visual Calculations ที่คำนวณค่าเฉลี่ยเคลื่อนที่ตามแกนที่ระบุ (row axis หรือ column axis) บนตารางข้อมูลของ visual มันนำค่า Expression มาหาค่าเฉลี่ยใน window ขนาดที่กำหนด (เช่น 7 จุด หรือ 7 วัน) ซึ่งช่วยให้แนวโน้มข้อมูลเรียบและชัดเจนขึ้น

ที่เจ๋งคือ MOVINGAVERAGE ทำงานตามลำดับของการแสดงผลในตัวกริด ไม่ใช่ตามเวลา หากคุณต้องการค่าเฉลี่ยเคลื่อนที่ของ 7 จุด มันจะเอาแถวปัจจุบันและแถวก่อนหน้า 6 แถว (หรือตามการตั้งค่า) มาหาค่าเฉลี่ย ท่านสามารถควบคุมขนาด window และว่าจะรวมแถวปัจจุบันหรือไม่

ส่วนตัวผมถือว่า MOVINGAVERAGE มีประโยชน์มากเมื่อต้องการทำ dashboard ที่มีกราฟแนวโน้มเรียบขึ้น เช่นกราฟยอดขายรายวันที่ผันผวนมาก หรือข้อมูล stock price ที่ปั่นไปปั่นมา มันช่วยให้เห็นแนวโน้มจริงได้ชัดขึ้น แต่ต้องใช้ใน Visual Calculations เท่านั้นนะครับ

How it works

ทำเส้นแนวโน้มที่เรียบขึ้น

ลดความผันผวนของข้อมูลรายวัน/รายช่วงเพื่อดูแนวโน้ม

ค่าเฉลี่ยเคลื่อนที่ 7 ช่วง

ทำ moving average ขนาด 7 จุดบนแกนที่แสดงใน visual

Examples

ตัวอย่างที่ 1: ค่าเฉลี่ยเคลื่อนที่ 7 จุด พื้นฐานMoving Avg Sales 7 = MOVINGAVERAGE([Total Sales], 7)

ถ้าเรามียอดขายรายวัน: 100, 95, 110, 105, 120, 98, 102, 115, 110
จุดที่ 7 (ค่า 102) จะได้ค่าเฉลี่ยของจุดที่ 1-7 = (100+95+110+105+120+98+102)/7 = 105.7

fx
Moving Avg Sales 7 = MOVINGAVERAGE([Total Sales], 7)

ผลลัพธ์ได้ค่าเฉลี่ยเคลื่อนที่ของ [Total Sales] ตามแกนแถวของ visual ขนาด 7 จุด (รวมจุดปัจจุบัน)
ตัวอย่างที่ 2: ค่าเฉลี่ยจากแถวก่อนหน้าเท่านั้น (excludeCurrent)Moving Avg Prev 7 = MOVINGAVERAGE([Total Sales], 7, FALSE)

ในตัวอย่างเดิม จุดที่ 7 จะได้ค่าเฉลี่ยของจุดที่ 1-6 = (100+95+110+105+120+98)/6 = 104.7 ใช้เมื่อต้องการดูแนวโน้มจากอดีตเท่านั้น

fx
Moving Avg Prev 7 = MOVINGAVERAGE([Total Sales], 7, FALSE)

ผลลัพธ์ค่าเฉลี่ยของ 7 แถวก่อนหน้า ไม่รวมแถวปัจจุบัน
ตัวอย่างที่ 3: ค่าเฉลี่ยเคลื่อนที่หน้าต่างเล็ก (3 จุด)Moving Avg Sales 3 = MOVINGAVERAGE([Total Sales], 3)

window เล็ก (3 จุด) จะเรียบน้อยกว่า window ใหญ่ (7 จุด) แต่ตอบสนองต่อการเปลี่ยนแปลงเร็วกว่า ใช้เมื่อต้องการจับสัญญาณเร็ว

fx
Moving Avg Sales 3 = MOVINGAVERAGE([Total Sales], 3)

ผลลัพธ์ค่าเฉลี่ยเคลื่อนที่ของ 3 จุด ตอบสนองต่อการเปลี่ยนแปลงเร็วกว่า window ใหญ่
ตัวอย่างที่ 4: เปรียบเทียบค่าปัจจุบันกับแนวโน้งDeviation from Trend = [Total Sales] – MOVINGAVERAGE([Total Sales], 7)

ถ้า [Total Sales] = 120 และ MOVINGAVERAGE = 105 ผลลัพธ์ = 15 (แสดงว่าค่าปัจจุบันสูงกว่าแนวโน้ม 15) ใช้เพื่อดูความผิดปกติของข้อมูล

fx
Deviation from Trend = [Total Sales] – MOVINGAVERAGE([Total Sales], 7)

ผลลัพธ์ค่าส่วนต่างระหว่างค่าปัจจุบันกับแนวโน้ง (positive = สูงกว่าแนวโน้ม, negative = ต่ำกว่าแนวโน้ม)
ตัวอย่างที่ 5: ใช้ reset เมื่อมีการเปลี่ยนหมวดหมู่Moving Avg by Category = MOVINGAVERAGE([Total Sales], 7, TRUE, ROWS, , DEFAULT, LOWESTPARENT)

หากมีข้อมูลตามหมวดหมู่ (เช่น A, A, A, B, B, B) การนับค่าเฉลี่ยจะรีเซ็ตเมื่อเปลี่ยนจากหมวดหมู่ A เป็น B ช่วยหลีกเลี่ยงการคำนวณข้ามหมวดหมู่

fx
Moving Avg by Category = MOVINGAVERAGE([Total Sales], 7, TRUE, ROWS, , DEFAULT, LOWESTPARENT)

ผลลัพธ์ค่าเฉลี่ยเคลื่อนที่ 7 จุด ในแต่ละหมวดหมู่ (รีเซ็ตเมื่อเปลี่ยนหมวดหมู่)

FAQs

MOVINGAVERAGE ต่างจาก RUNNINGSUM อย่างไร?+

MOVINGAVERAGE ใช้ window ขนาดคงที่ (เช่น 7 จุด) และคำนวณค่าเฉลี่ย ส่วน RUNNINGSUM ใช้ accumulative sum แบบ running (รวมตั้งแต่จุดแรกถึงจุดปัจจุบัน) MOVINGAVERAGE เหมาะสำหรับแนวโน้มแบบเนื้อ ส่วน RUNNINGSUM เหมาะสำหรับสะสมยอด

MOVINGAVERAGE ใช้กับ measure ทั่วไป (นอก Visual Calculations) ได้ไหม?+

ไม่ได้ MOVINGAVERAGE ออกแบบมาสำหรับ Visual Calculations เท่านั้น ถ้าต้องการค่าเฉลี่ยเคลื่อนที่ใน measure ทั่วไป ต้องสร้างตารางเวลาเสริม แล้วใช้ AVERAGEX + DATEADD หรือการกรองช่วงเวลาด้วยตัวเอง

ใช้ windowSize เท่าไหร่ดี?+

ขึ้นอยู่กับลักษณะข้อมูล window ใหญ่ (เช่น 30 วัน) จะเรียบแนวโน้มมากแต่ตอบสนองช้ากว่า window เล็ก (เช่น 3-7 วัน) window เล็กจะตอบสนองเร็วแต่ผันผวน ส่วนตัวผมแนะนำเริ่มจาก 7 แล้วปรับตามความต้องการ

ถ้า windowSize มากกว่าจำนวนแถวที่มี จะเกิดอะไรขึ้น?+

MOVINGAVERAGE จะใช้เฉพาะแถวที่มีอยู่ (ไม่มี error) ถ้าชุดข้อมูลมีแค่ 3 แถว แต่ windowSize = 7 มันจะเฉลี่ยเพียง 3 แถวที่มี

ทำไมผลลัพธ์เปลี่ยนเมื่อเปลี่ยน orderBy?+

MOVINGAVERAGE คำนวณตามลำดับของแถวในตารางข้อมูล orderBy เปลี่ยนลำดับแถวจึงทำให้ window และค่าเฉลี่ยเปลี่ยน ต้องตรวจสอบให้แน่ใจว่า orderBy ตรงกับตัวแปรที่ต้องการเรียงลำดับ

includeCurrent = FALSE กับ reset มีความสัมพันธ์ไหม?+

ไม่เกี่ยวข้องกัน includeCurrent ควบคุมว่าจะรวมแถวปัจจุบันหรือไม่ reset ควบคุมเมื่อไรการนับจะเริ่มใหม่ (เช่นเมื่อเปลี่ยนหมวดหมู่) สามารถใช้ร่วมกันได้

Resources & Related

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

ฟังก์ชันนี้MOVINGAVERAGEVisual calculations
Filter (3)
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

ORDERBY

ORDERBY ระบุลำดับการเรียงลำดับ (ASC/DESC) และการจัดการค่าว่าง สำหรับ window functions เช่น INDEX, OFFSET, WINDOW เพื่อกำหนดลำดับของแถวภายในกลุ่ม

WINDOW

WINDOW ดึงช่วงแถวภายในพาร์ทิชัน คืนค่าเป็นตาราง เหมาะกับการคำนวณแบบช่วง เช่น moving average, running sum, หรือ lead/lag analysis

Aggregation (2)
AVERAGE

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

AVERAGEX

AVERAGEX เป็น Iterator Function ที่วนลูปตารางทีละแถว คำนวณ Expression แล้วนำผลลัพธ์มาหาค่าเฉลี่ย เหมาะสำหรับกรณีที่ต้องการเฉลี่ยค่าที่คำนวณได้ เช่น ราคา×จำนวน หรือค่าเฉลี่ยของ Measure ในแต่ละกลุ่ม

Visual calculations (1)
RUNNINGSUM

RUNNINGSUM คำนวณยอดสะสมของคอลัมน์/นิพจน์ตามลำดับบนแกนของ Visual Calculations โดยสามารถกำหนด Axis, OrderBy, Blanks และ Reset เพื่อควบคุมลำดับและจุดเริ่มสะสม

Comments

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