Thep Excel

OPENINGBALANCEMONTH – คำนวณค่า ณ วันเปิดเดือน

OPENINGBALANCEMONTH ประเมิน Expression ณ จุดเปิดเดือน (วันสิ้นเดือนก่อนหน้า) เหมาะสำหรับหา opening balance ของยอดคงเหลือ สต็อก หรือสถิติ ณ จุดเริ่มเดือน

=OPENINGBALANCEMONTH(<Expression>, <Dates>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
5/10

Difficulty
5/10

Usefulness
5/10

Syntax & Arguments

=OPENINGBALANCEMONTH(<Expression>, <Dates>)

Argument Type Required Default Description
Expression expression Yes นิพจน์หรือ measure ที่ต้องการประเมิน ณ จุดเปิดเดือน โดยมักจะเป็น measure ที่หา balance/ยอดคงเหลือ
Dates column (date/time) Yes คอลัมน์วันที่จากตารางวันที่ (Date table) ที่ใช้เป็นตัวอ้างอิง หรือ table expression ที่ให้คอลัมน์วันที่

How it works

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

หายอดคงเหลือ ณ จุดเริ่มเดือน เพื่อเทียบกับค่าปิดเดือน

สต็อกเปิดเดือน/จำนวนคงค้าง

ใช้กับ measure คงค้างที่ต้องการอ่าน ณ จุดเวลา

Examples

ตัวอย่างที่ 1: Opening Balance ของยอดสต็อก
Opening Inventory Balance = OPENINGBALANCEMONTH( [Current Inventory Value], 'Date'[Date] )
สมมุติว่า [Current Inventory Value] เป็น measure หาค่าเก็บสต็อกปัจจุบัน ตอนที่ filter โดย 'Date'[Date] = 2024-02-15 มันจะส่งกลับค่ายอดสต็อก ณ 2024-01-31 (วันสิ้นเดือนมกราคม) ซึ่งคือ opening balance ของเดือนกุมภาพันธ์
DAX Formula:

Opening Inventory Balance =
OPENINGBALANCEMONTH(
    [Current Inventory Value],
    'Date'[Date]
)

Result:

ได้ค่ายอดสต็อก ณ วันสิ้นเดือนก่อนหน้า (วันเปิดเดือนปัจจุบัน)

ตัวอย่างที่ 2: เปรียบเทียบเปิด-ปิด (Movement Analysis)
Monthly Movement = [Closing Month Balance] - [Opening Month Balance] // หรือในรูปแบบ VAR Monthly Movement (VAR) = VAR OpenBalance = OPENINGBALANCEMONTH([Balance…
ใช้เปรียบเทียบระหว่าง [Opening Month Balance] (OPENINGBALANCEMONTH) และ [Closing Month Balance] (CLOSINGBALANCEMONTH) เพื่อดู movement โดยค่า positive หมายถึง "เพิ่มขึ้น" ค่า negative หมายถึง "ลดลง" เหมาะสำหรับ KPI Dashboard ที่ต้องแสดงการเปลี่ยนแปลง
DAX Formula:

Monthly Movement =
[Closing Month Balance] - [Opening Month Balance]

// หรือในรูปแบบ VAR
Monthly Movement (VAR) =
VAR OpenBalance = OPENINGBALANCEMONTH([Balance], 'Date'[Date])
VAR CloseBalance = CLOSINGBALANCEMONTH([Balance], 'Date'[Date])
RETURN CloseBalance - OpenBalance

Result:

ได้ค่าการเปลี่ยนแปลง (movement) ของยอดคงเหลือในช่วงเดือน

ตัวอย่างที่ 3: CALCULATE + Filter เพิ่มเติม
Opening Balance (ประเภท A เท่านั้น) = CALCULATE( OPENINGBALANCEMONTH( [Total Balance], 'Date'[Date] ), Product[Category] = "A" )
OPENINGBALANCEMONTH นั้นเคารพ filter context จาก CALCULATE ดังนั้นโดยการใส่ boolean filter Product[Category] = "A" มันจะประเมิน [Total Balance] ณ วันเปิดเดือน เฉพาะขอบเขตประเภท A เท่านั้น
DAX Formula:

=Opening Balance (ประเภท A เท่านั้น) =
CALCULATE(
    OPENINGBALANCEMONTH(
        [Total Balance],
        'Date'[Date]
    ),
    Product[Category] = "A"
)

Result:

ได้ค่า Opening Balance ของประเภท A เท่านั้น

FAQs

OPENINGBALANCEMONTH กับ PREVIOUSMONTH ต่างกันอย่างไร?

PREVIOUSMONTH คืนค่าตารางวันที่ของเดือนก่อนหน้า เพื่อใช้กรองข้อมูล ส่วน OPENINGBALANCEMONTH คือการประเมิน Expression เอง ณ จุดเวลา “วันสิ้นเดือนก่อนหน้า” (ซึ่งคือ opening ของเดือนปัจจุบัน) โดยคืนค่าเดี่ยว (scalar) ไม่ใช่ตาราง หากต้องการใช้ PREVIOUSMONTH ให้ filter ต้องเขียน VAR PrevMonth = PREVIOUSMONTH(‘Date'[Date]) แล้วใช้กับ CALCULATE

ทำไมถึงบอกว่าคืนค่า ณ วันสิ้นเดือนก่อนหน้า ไม่ใช่วันเปิดเดือนปัจจุบัน?

เพราะจากมุมมองการบัญชี/ทางการเงิน วันสิ้นเดือนเดือนที่ 1 (2024-01-31) = วันเปิดเดือนที่ 2 (2024-02-01) ซึ่งคือเวลาเดียวกัน ดังนั้นค่าคงเหลือ ณ จุดเวลานี้คือ “opening balance” ของเดือนที่ 2 และ “closing balance” ของเดือนที่ 1 พูดแบบเรียบง่าย OPENINGBALANCEMONTH ไปดึงค่า “สิ้นเดือนก่อนหน้า” ซึ่งก็คือ opening ของเดือนปัจจุบัน ครับ

OPENINGBALANCEMONTH ใช้ได้กับ DirectQuery ไหม?

ไม่ได้ครับ OPENINGBALANCEMONTH เป็น Time Intelligence function ที่ต้องใช้กับ Import Mode เท่านั้น ถ้าลองใช้กับ DirectQuery model จะ error ตัว function นี้คำนวณ context transition อยู่ในหน่วยความจำจาก Power BI/Excel ไม่ได้ translate เป็น SQL/DAX ที่ backend รองรับ

ต้องกำหนด date table ไหม? หรือใช้คอลัมน์วันที่ตามปกติได้?

ดีที่สุดคือ ให้มี date table ที่ mark เป็น “Date Table” ใน Power BI model ถึงแม้ว่า OPENINGBALANCEMONTH จะใช้คอลัมน์ date column ตามธรรมชาติได้ แต่เมื่อ mark ให้เป็น date table อย่างเป็นทางการ Power BI จะประมวลผลความสัมพันธ์และ filter context ได้ดีขึ้น นอกจากนั้นก็ยังช่วยให้ฟังก์ชัน Time Intelligence อื่น ๆ เช่น YTD, MTD ทำงานได้อย่างถูกต้อง

Resources & Related

Additional Notes

OPENINGBALANCEMONTH เป็นฟังก์ชัน Time Intelligence ของ DAX ที่ทำหน้าที่ประเมิน Expression ณ “วันที่เทียบเท่ากับวันสิ้นเดือนก่อนหน้า” ตามบริบท Filter Context ที่กำหนด มันอยู่ในกลุ่มฟังก์ชันสำหรับจัดการ opening/closing balance ที่มักใช้กับ measure แบบ semi-additive (ยอดคงเหลือ ไม่ใช่ยอดสะสม)

ที่เจ๋งคือ OPENINGBALANCEMONTH ประหยัดเวลาเมื่อต้องหา “ค่าเปิดงวด” โดยไม่ต้องเขียน CALCULATE + PREVIOUSDAY + STARTOFMONTH เอง มันทำงานดี ๆ กับ measure เชิงสต็อก เช่น inventory balance, bank account balance, หรือจำนวนพนักงาน ณ วันเฉพาะ ซึ่งต้องใช้ “ค่าสุดท้ายของช่วงเวลา” มากกว่าการ summarize ทั้งช่วง

ส่วนตัวผมมักใช้ OPENINGBALANCEMONTH คู่กับ CLOSINGBALANCEMONTH เพื่อวิเคราะห์การเปลี่ยนแปลง (movement) ของยอดคงเหลือในแต่ละเดือน แล้วนำไปใช้ในรายงาน KPI หรือ Dashboard เพื่อให้เห็นภาพรวมของการเปลี่ยนแปลง ครับ

Leave a Reply

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