Thep Excel

OPENINGBALANCEYEAR – ค่า ณ จุดเปิดปี (Opening Balance)

OPENINGBALANCEYEAR คำนวณค่า Expression ณ วันแรกของปี โดยดึงค่าจากวันสิ้นปีปีก่อนหน้า เหมาะสำหรับการหา opening balance ของคงเหลือ บัญชี สต็อก และค่าที่วัดได้แค่ที่จุดเวลาเดียว

=OPENINGBALANCEYEAR(<Expression>, <Dates>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
5/10

Difficulty
5/10

Usefulness
5/10

Syntax & Arguments

=OPENINGBALANCEYEAR(<Expression>, <Dates>)

Argument Type Required Default Description
Expression expression Yes นิพจน์หรือ Measure ที่ต้องการประเมิน ณ วันแรกของปี ส่วนใหญ่เป็น Measure ประเภท Balance (คงเหลือ) เช่น Inventory, Accounts Receivable, Cash Balance
Dates column (Date) Yes คอลัมน์วันที่จากตารางวันที่ (Date Table) ที่มีการทำเครื่องหมายว่าเป็น Date Table และมีวันที่ต่อเนื่อง ทั้งปีจนครบ

How it works

ยอดคงเหลือเปิดปี

ใช้ทำรายงานเปลี่ยนแปลงยอดคงเหลือรายปี

เทียบเปิดปีและ YTD

เทียบ opening balance กับตัวชี้วัดสะสมระหว่างปี

Examples

ตัวอย่างที่ 1: หา Opening Balance ของสินค้าคงคลัง
Inventory Opening = OPENINGBALANCEYEAR( [Inventory Balance], 'Date'[Date] )
เหมาะกับ semi-additive measure ประเภท stock/balance ที่ต้องหาค่าเปิดงวด เพื่อเทียบกับค่าปิดปี หรือวิเคราะห์การเปลี่ยนแปลงสินค้าในช่วงปี
DAX Formula:

Inventory Opening =
OPENINGBALANCEYEAR(
    [Inventory Balance],
    'Date'[Date]
)

Result:

ได้ค่า Inventory Balance ณ วันแรกของปี (เทียบเท่าคุณสต็อก 31 ธันวาคม ปีที่แล้ว)

ตัวอย่างที่ 2: คำนวณการเปลี่ยนแปลงยอดเงินในบัญชี (Opening → Closing)
Net Change (Year) = VAR OpenBal = OPENINGBALANCEYEAR( [Account Balance], 'Date'[Date] ) VAR CloseBal = CLOSINGBALANCEYEAR( [Account Balance], 'Date'[Date] ) RET…
ฟังก์ชันเหมาะกับรายงานการวิเคราะห์การเปลี่ยนแปลง (Change Analysis) ในสินค้า บัญชี หรือเงินสดตลอดปี โดยใช้ VAR เก็บค่าเปิด-ปิดก่อน แล้วค่อยลบออก จะ debug ง่ายกว่า nested CALCULATE
DAX Formula:

=Net Change (Year) =
VAR OpenBal = OPENINGBALANCEYEAR(
    [Account Balance],
    'Date'[Date]
)
VAR CloseBal = CLOSINGBALANCEYEAR(
    [Account Balance],
    'Date'[Date]
)
RETURN
CloseBal - OpenBal

Result:

ได้ส่วนต่างระหว่างยอดเงินปิดปีและเปิดปี (ได้ผลสำเร็จขึ้น/ลง)

ตัวอย่างที่ 3: หา Inventory Growth จากเปิดปี
YTD Inventory Growth = VAR CurrentBal = [Inventory Balance] VAR OpeningBal = OPENINGBALANCEYEAR( [Inventory Balance], 'Date'[Date] ) RETURN IF( OpeningBal = 0,…
ใช้ IF + DIVIDE เพื่อหลีกเลี่ยงการหารด้วยศูนย์ เหมาะกับการวิเคราะห์ทาง % Growth ของสินค้าคงคลัง หรือการเติบโตจากต้นปีจนถึงปัจจุบัน (YTD Growth)
DAX Formula:

YTD Inventory Growth =
VAR CurrentBal = [Inventory Balance]
VAR OpeningBal = OPENINGBALANCEYEAR(
    [Inventory Balance],
    'Date'[Date]
)
RETURN
IF(
    OpeningBal = 0,
    BLANK(),
    DIVIDE(CurrentBal - OpeningBal, OpeningBal, 0)
)

Result:

ได้ร้อยละการเปลี่ยนแปลงจากเปิดปีจนถึงปัจจุบัน (ในบริบท filter ปัจจุบัน)

ตัวอย่างที่ 4: เทียบ Opening Balance ปีต่างๆ (Multi-Year)
Comparison: Opening This Year vs Last Year = VAR ThisYearOpening = OPENINGBALANCEYEAR( [Balance], 'Date'[Date] ) VAR LastYearOpening = OPENINGBALANCEYEAR( [Bala…
ผสม OPENINGBALANCEYEAR + DATEADD เพื่อเทียบ opening balance ของปีต่างๆ เหมาะกับ Year-over-Year (YoY) Analysis ในภาพของ opening position เพื่อเข้าใจการเปลี่ยนแปลงโครงสร้างจากต้นปี
DAX Formula:

Comparison: Opening This Year vs Last Year =
VAR ThisYearOpening = OPENINGBALANCEYEAR(
    [Balance],
    'Date'[Date]
)
VAR LastYearOpening = OPENINGBALANCEYEAR(
    [Balance],
    DATEADD('Date'[Date], -1, YEAR)
)
RETURN
THISYEAROpening - LastYearOpening

Result:

ได้ความต่างของ opening balance ระหว่างปีนี้กับปีที่แล้ว

FAQs

OPENINGBALANCEYEAR ประเมินจากวันไหนจริงๆ?

OPENINGBALANCEYEAR ประเมินจากวันแรก (First Day) ของปี โดยดึงค่าจากวันสิ้นปีปีก่อนหน้า (Last Day of Previous Year) เสมือน CALCULATE(Expression, PREVIOUSDAY(STARTOFYEAR(Dates))) ดังนั้น ถ้าปีเริ่ม 1 มกราคม ฟังก์ชันจะหาค่า ณ 31 ธันวาคม ปีก่อน

ต่างอย่างไร OPENINGBALANCEYEAR vs PREVIOUSYEAR?

PREVIOUSYEAR คืนตารางวันที่ (ทั้งปีที่แล้ว) เพื่อใช้เป็นตัวกรองสำหรับ CALCULATE ส่วน OPENINGBALANCEYEAR คืนค่า scalar (เลขตัวเดียว) ของ Expression ณ จุดเปิดปี เหตุผลง่ายๆ PREVIOUSYEAR = table, OPENINGBALANCEYEAR = value

ฟังก์ชันนี้เหมาะกับ measure ประเภทไหน?

เหมาะกับ semi-additive measures ที่เป็น Balance, Inventory, Quantity, Accounts Receivable ที่วัดได้แค่ณ จุดเวลาเดียว (point-in-time snapshot) แต่ไม่เหมาะกับ Sales, Revenue, Cost ที่เป็นยอดรวมของช่วง เพราะวัดค่าได้ตลอดช่วงเวลา

จะรู้ได้ไง measure ที่ใช้ OPENINGBALANCEYEAR นั้นถูกต้อง?

ลองหา Opening + Closing Balance แล้วลบออก ผลที่ได้ควรตรงกับการเปลี่ยนแปลงเบื้องต้น (First Principles Check) เช่น Opening Inventory 100 + Purchases 50 – Sales 30 = Closing Inventory 120 ถ้าตรง แสดงว่า measure ของคุณ semi-additive และ OPENINGBALANCEYEAR ใช้ได้

ถ้าเปลี่ยนปีงบประมาณ OPENINGBALANCEYEAR จะยังใช้ได้ไหม?

ยังใช้ได้ แต่ต้องให้ Date Table และ Data Model สอดคล้องกับปีงบประมาณ ถ้าปีงบประมาณเริ่มเดือน เมษายน ให้ตรวจว่า Dates column ในฟังก์ชันสาย “ปีพิษฐ์” อย่างถูกต้อง บ้างก็เพิ่มคอลัมน์ Fiscal Year แล้วใช้ logic สอดคล้อง

OPENINGBALANCEYEAR ทำ context transition ไหม?

ใช่ ทำ context transition จาก row context → filter context เหมือน CALCULATE ฉะนั้น ถ้าใช้ใน row context (เช่น calculated column) มันจะแปลง context อย่างชาญฉลาด ระวังบ้างว่า filter context ที่เกิดขึ้นจริงๆ มันเป็นแบบไหน

Resources & Related

Related functions

Additional Notes

OPENINGBALANCEYEAR เป็น Time Intelligence Function ที่ประเมิน Expression ณ วันแรกของปีภายใต้ตัวกรองปัจจุบัน โดยจะสำเร็จเสมือนประเมินค่า “ณ วันสิ้นปีปีก่อนหน้า” ซึ่งเทียบเท่ากับ CALCULATE(Expression, PREVIOUSDAY(STARTOFYEAR(Dates)))

ที่เจ๋งคือ ฟังก์ชันนี้คำนึงถึง “semi-additive” measures แบบ Balance, Inventory, Quantity on Hand ที่หนึ่ง ในขณะที่ Sales หรือ Revenue นั้นสรุป/รวมได้ Balance ไม่ได้ – มันเป็นค่า ณ จุดเวลา พอมี OPENINGBALANCEYEAR ก็หา “ค่าเปิดปี” เพื่อเทียบกับ “ค่าปิดปี” หรือวิเคราะห์การเปลี่ยนแปลง

ส่วนตัวผมคิดว่า Time Intelligence Functions (OPENINGBALANCEYEAR, CLOSINGBALANCEYEAR, CLOSINGBALANCEMONTH) เป็น “hidden gems” ที่จริงจริง มันช่วยการวิเคราะห์ข้อมูลทางการเงินและสินค้าคงคลัง จริงๆ ที่เข้าใจจังหวะเวลา แล้วคุณเข้าใจ DAX ระดับหนึ่งแล้ว

Leave a Reply

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