OFFSET
อัปเดต 2 ต.ค. 2569 · ตัวเลขในตัวอย่างตรงกับตัวคำนวณอ้างอิงที่เขียนแยก และสูตร Excel ที่คำนวณจากข้อมูลชุดเดียวกัน · ยังไม่ได้ตรวจใน Power BI Desktop
เอกสารอ้างอิง: OFFSET (Microsoft Learn) · syntax และหมายเหตุในหน้านี้ตรวจกับหน้านี้ของ Microsoft · ตัวจำลองในหน้านี้รองรับเฉพาะรูปแบบที่ใช้ในตัวอย่าง (เช่น ไม่รองรับ calendar-based time intelligence)
OFFSET คืออะไร
คืนแถวที่อยู่ก่อนหรือหลังแถวปัจจุบันตามจำนวนที่กำหนด ภายในตารางที่เรียงลำดับแล้ว ใช้หายอดเดือนก่อนในตารางโดยไม่ต้องใช้ฟังก์ชันเวลา
ใช้เมื่อไหร่
- เทียบกับแถวก่อนหน้าหรือถัดไปในตาราง เช่น เดือนก่อน
- เลื่อนตามลำดับที่ไม่ใช่วันที่ เช่น อันดับสินค้าถัดไป
รูปแบบสูตร
Argument แต่ละตัว
ชี้ที่ argument ในรูปแบบสูตรด้านบนเพื่อไฮไลต์แถวนั้น
| Argument | จำเป็นไหม | ความหมาย |
|---|---|---|
| delta | จำเป็น | จำนวนแถวที่เลื่อน ติดลบ = ย้อนหลัง บวก = ไปข้างหน้า |
| relation | จำเป็น | ตารางที่ใช้เลื่อน เช่น ALLSELECTED('วันที่'[เดือน], 'วันที่'[ชื่อเดือน]) |
| orderBy | จำเป็น | ORDERBY(…) บอกลำดับ เช่น ORDERBY('วันที่'[เดือน]) |
| [blanks] | ไม่บังคับ | ตำแหน่งของค่าว่างเมื่อเรียง DEFAULT, FIRST หรือ LAST |
| [partitionBy] | ไม่บังคับ | PARTITIONBY(…) แบ่งกลุ่ม เลื่อนภายในแต่ละกลุ่ม |
ลองเลย: ยอดขายเทียบเดือนก่อนด้วย OFFSET
คลิกตัวเลขในตารางเพื่อดูตัวกรองไหลผ่านโมเดลจนเป็นตัวเลขนั้น เลือกค่าใน Slicer แก้ Measure ได้ หรือกด Excel เพื่อดูสูตร Excel ที่ได้คำตอบเดียวกัน
- พนักงานขายไม่มีตัวกรอง
- สินค้าไม่มีตัวกรอง
- วันที่[ปี] = 2025เงื่อนไขบน [เดือน] [ชื่อเดือน] เหลือ 0 ชุดค่า
- ยอดขายเหลือ 0 จาก 495 แถว · หนึ่งจุดคือหนึ่งคำสั่งซื้อ
| เดือน | ยอดขาย | ยอดเดือนก่อน | เปลี่ยนจากเดือนก่อน |
|---|---|---|---|
| ม.ค. | |||
| ก.พ. | |||
| มี.ค. | |||
| เม.ย. | |||
| พ.ค. | |||
| มิ.ย. | |||
| ก.ค. | |||
| ส.ค. | |||
| ก.ย. | |||
| ต.ค. | |||
| พ.ย. | |||
| ธ.ค. | |||
| ยอดรวม |
ถ้าคุณเขียน Excel อยู่แล้ว
=INDEX(ยอดรายเดือน, ROW()-1)Excel อ้างเซลล์แถวบนในตารางที่เรียงแล้ว
ยอดเดือนก่อน = CALCULATE([ยอดขาย], OFFSET(-1, ALLSELECTED('วันที่'[เดือน], 'วันที่'[ชื่อเดือน]), ORDERBY('วันที่'[เดือน])))ย้อน 1 แถวตามลำดับเดือน ภายในปีที่เลือก
ข้อผิดพลาดและเคล็ดลับ
แบบทดสอบ 3 ข้อ
1. แถว ม.ค. ของ CALCULATE([ยอดขาย], OFFSET(-1, ALLSELECTED(…เดือน…), ORDERBY('วันที่'[เดือน]))) ได้อะไร
OFFSET คืนตารางว่างเมื่อเลื่อนออกนอกกลุ่ม
2. delta = 1 หมายถึงอะไร
ค่าลบย้อนหลัง ค่าบวกไปข้างหน้า
3. ถ้าไม่ใส่ relation ต้องใส่อะไรแน่นอน
relation จะเป็น ALLSELECTED ของคอลัมน์ใน ORDERBY และ PARTITIONBY
ไฟล์ฝึก OFFSET
9Expert-DAX-OFFSET-Practice-v1.0.xlsx
โจทย์ในชีตแบบฝึกหัด
- ข้อ 1[ยอดเดือนก่อน] ยอดขายของแถวก่อนหน้าตามลำดับเดือน · กรอง ปี = 2025, เดือน = ก.ค.
- ข้อ 2[ยอดเดือนก่อน] ยอดขายของแถวก่อนหน้าตามลำดับเดือน · กรอง ช่องทาง = Online, ปี = 2025, เดือน = ธ.ค.
- ข้อ 3[ยอดขาย] ยอดขายของช่วงที่กรอง · กรอง ปี = 2025, เดือน = พ.ค.
- ข้อ 4[เปลี่ยนจากเดือนก่อน] ยอดขายเพิ่มหรือลดจากเดือนก่อนเป็นสัดส่วน · กรอง ช่องทาง = Modern Trade, ปี = 2025, เดือน = ต.ค.
- ข้อ 5[ยอดขาย] ยอดขายของช่วงที่กรอง · กรอง ปี = 2025
ไปต่อ
ต่อยอดใน Data Analysis Expression (DAX) for Power BI: Measures, X Aggregation, CALCULATE, Date Table และ Time Intelligence (2 วัน)