คลังสูตรExcel 80 · DAX 95 · M 15
ในหน้านี้
หน้าแรก › DAX › ฟังก์ชันหน้าต่าง (Window) › OFFSET

OFFSET

DAX · Power BIฟังก์ชันหน้าต่าง (Window)ระดับกลางแบบ 3 · แนวคิดเดียวกัน คนละฟังก์ชัน

อัปเดต 2 ต.ค. 2569 · ตัวเลขในตัวอย่างตรงกับตัวคำนวณอ้างอิงที่เขียนแยก และสูตร Excel ที่คำนวณจากข้อมูลชุดเดียวกัน · ยังไม่ได้ตรวจใน Power BI Desktop

เอกสารอ้างอิง: OFFSET (Microsoft Learn) · syntax และหมายเหตุในหน้านี้ตรวจกับหน้านี้ของ Microsoft · ตัวจำลองในหน้านี้รองรับเฉพาะรูปแบบที่ใช้ในตัวอย่าง (เช่น ไม่รองรับ calendar-based time intelligence)

OFFSET คืออะไร

คืนแถวที่อยู่ก่อนหรือหลังแถวปัจจุบันตามจำนวนที่กำหนด ภายในตารางที่เรียงลำดับแล้ว ใช้หายอดเดือนก่อนในตารางโดยไม่ต้องใช้ฟังก์ชันเวลา

ใช้เมื่อไหร่

  • เทียบกับแถวก่อนหน้าหรือถัดไปในตาราง เช่น เดือนก่อน
  • เลื่อนตามลำดับที่ไม่ใช่วันที่ เช่น อันดับสินค้าถัดไป

รูปแบบสูตร

OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Argument แต่ละตัว

ชี้ที่ argument ในรูปแบบสูตรด้านบนเพื่อไฮไลต์แถวนั้น

Argumentจำเป็นไหมความหมาย
deltaจำเป็นจำนวนแถวที่เลื่อน ติดลบ = ย้อนหลัง บวก = ไปข้างหน้า
relationจำเป็นตารางที่ใช้เลื่อน เช่น ALLSELECTED('วันที่'[เดือน], 'วันที่'[ชื่อเดือน])
orderByจำเป็นORDERBY(…) บอกลำดับ เช่น ORDERBY('วันที่'[เดือน])
[blanks]ไม่บังคับตำแหน่งของค่าว่างเมื่อเรียง DEFAULT, FIRST หรือ LAST
[partitionBy]ไม่บังคับPARTITIONBY(…) แบ่งกลุ่ม เลื่อนภายในแต่ละกลุ่ม

ลองเลย: ยอดขายเทียบเดือนก่อนด้วย OFFSET

คลิกตัวเลขในตารางเพื่อดูตัวกรองไหลผ่านโมเดลจนเป็นตัวเลขนั้น เลือกค่าใน Slicer แก้ Measure ได้ หรือกด Excel เพื่อดูสูตร Excel ที่ได้คำตอบเดียวกัน

[ยอดขาย] = SUMX('ยอดขาย', 'ยอดขาย'[จำนวน] * 'ยอดขาย'[ราคาต่อหน่วย] * (1 - 'ยอดขาย'[ส่วนลด]))
[เปลี่ยนจากเดือนก่อน] = DIVIDE([ยอดขาย] - [ยอดเดือนก่อน], [ยอดเดือนก่อน])
Ctrl + Enter คำนวณ · พิมพ์ ' เลือกตาราง · [ เลือกคอลัมน์หรือ Measure
  • พนักงานขายไม่มีตัวกรอง
  • สินค้าไม่มีตัวกรอง
  • วันที่[ปี] = 2025เงื่อนไขบน [เดือน] [ชื่อเดือน] เหลือ 0 ชุดค่า
  • ยอดขายเหลือ 0 จาก 495 แถว · หนึ่งจุดคือหนึ่งคำสั่งซื้อ
ยอดขายเทียบเดือนก่อนด้วย OFFSET
ยอดขายเทียบเดือนก่อนด้วย OFFSET · ใช้ลูกศรเลื่อนระหว่างช่อง Enter เพื่อดูว่าตัวเลขนั้นคำนวณอย่างไร
เดือนยอดขายยอดเดือนก่อนเปลี่ยนจากเดือนก่อน
ม.ค.
ก.พ.
มี.ค.
เม.ย.
พ.ค.
มิ.ย.
ก.ค.
ส.ค.
ก.ย.
ต.ค.
พ.ย.
ธ.ค.
ยอดรวม
(ว่าง)ยอดเดือนก่อน · ม.ค. · 2025
ดูทีละขั้นขั้น 5 / 5

ถ้าคุณเขียน Excel อยู่แล้ว

EXCEL=INDEX(ยอดรายเดือน, ROW()-1)

Excel อ้างเซลล์แถวบนในตารางที่เรียงแล้ว

DAXยอดเดือนก่อน = CALCULATE([ยอดขาย], OFFSET(-1, ALLSELECTED('วันที่'[เดือน], 'วันที่'[ชื่อเดือน]), ORDERBY('วันที่'[เดือน])))

ย้อน 1 แถวตามลำดับเดือน ภายในปีที่เลือก

ข้อผิดพลาดและเคล็ดลับ

แถว ม.ค. ว่างเพราะไม่มีแถวก่อนหน้าใน relation (OFFSET คืนตารางว่างเมื่อเลื่อนออกนอกกลุ่ม) ต่างจาก PREVIOUSMONTH ที่ข้ามไป ธ.ค. ปีก่อน
แถวยอดรวมได้ยอด ม.ค. ถึง พ.ย. เพราะยอดรวมมีหลายแถวปัจจุบัน OFFSET จึงเลื่อนทีละแถวแล้วรวมผล ตามที่ Microsoft Learn อธิบาย
relation มี [ชื่อเดือน] ด้วยเพราะแถวของ Matrix กรองด้วย [ชื่อเดือน] ส่วน ORDERBY ใช้ [เดือน] ที่เป็นตัวเลขเพื่อให้เรียง ม.ค. ถึง ธ.ค. ถูกต้อง
ฟังก์ชันกลุ่ม Window ใช้ได้ทั้งใน Measure และ visual calculation หน้านี้สอนแบบ Measure ที่ระบุ relation เอง (หน้านี้ไม่รองรับ MATCHBY และ reset)

แบบทดสอบ 3 ข้อ

1. แถว ม.ค. ของ CALCULATE([ยอดขาย], OFFSET(-1, ALLSELECTED(…เดือน…), ORDERBY('วันที่'[เดือน]))) ได้อะไร

2. delta = 1 หมายถึงอะไร

3. ถ้าไม่ใส่ relation ต้องใส่อะไรแน่นอน

ไฟล์ฝึก OFFSET

9Expert-DAX-OFFSET-Practice-v1.0.xlsx

รุ่น 1.0 · 26/9/2026 · 70 KB · ไม่มี Macro · นำเข้า Power BI แล้วทำโจทย์ พิมพ์คำตอบกลับในไฟล์ ตรวจเอง
เริ่มต้นยอดขายสินค้าพนักงานขายวันที่คงคลังเป้าภูมิภาคแบบฝึกหัดเฉลย

โจทย์ในชีตแบบฝึกหัด

  1. ข้อ 1[ยอดเดือนก่อน] ยอดขายของแถวก่อนหน้าตามลำดับเดือน · กรอง ปี = 2025, เดือน = ก.ค.
  2. ข้อ 2[ยอดเดือนก่อน] ยอดขายของแถวก่อนหน้าตามลำดับเดือน · กรอง ช่องทาง = Online, ปี = 2025, เดือน = ธ.ค.
  3. ข้อ 3[ยอดขาย] ยอดขายของช่วงที่กรอง · กรอง ปี = 2025, เดือน = พ.ค.
  4. ข้อ 4[เปลี่ยนจากเดือนก่อน] ยอดขายเพิ่มหรือลดจากเดือนก่อนเป็นสัดส่วน · กรอง ช่องทาง = Modern Trade, ปี = 2025, เดือน = ต.ค.
  5. ข้อ 5[ยอดขาย] ยอดขายของช่วงที่กรอง · กรอง ปี = 2025

ไปต่อ

อยากเขียน DAX สำหรับรายงานจริงทั้งระบบ

ต่อยอดใน Data Analysis Expression (DAX) for Power BI: Measures, X Aggregation, CALCULATE, Date Table และ Time Intelligence (2 วัน)

ดูหลักสูตร