---
title: CLOSINGBALANCEYEAR – ยอดคงเหลือสิ้นปี
url: https://www.thepexcel.com/functions/dax/time-intelligence/closingbalanceyear-dax/
type: function-explainer
program: DAX
syntax: "CLOSINGBALANCEYEAR(<Expression>, <Dates>[, <Filter>][, <YearEndDate>])"
date: 2025-12-13
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 5
  usefulness: 5
---

# CLOSINGBALANCEYEAR – ยอดคงเหลือสิ้นปี

> ฟังก์ชันเวลา Intelligence ที่ประเมิน Expression ณ วันสิ้นปีของปีในบริบทปัจจุบัน รองรับปีบัญชี (Fisca

## คำอธิบาย

ฟังก์ชันเวลา Intelligence ที่ประเมิน Expression ณ วันสิ้นปีของปีในบริบทปัจจุบัน รองรับปีบัญชี (Fiscal Year) และตัวกรองเพิ่มเติม เหมาะสำหรับมาตรวัด Semi-additive เช่น ยอดคงเหลือ ยอดเงินสด

## Syntax

```excel
CLOSINGBALANCEYEAR(&lt;Expression&gt;, &lt;Dates&gt;[, &lt;Filter&gt;][, &lt;YearEndDate&gt;])
```

**Variant**

```excel
CLOSINGBALANCEYEAR(&lt;Expression&gt;, &lt;Dates&gt;)
```

ประเมินนิพจน์ ณ วันสิ้นปีตามบริบทวันที่

**Variant**

```excel
CLOSINGBALANCEYEAR(&lt;Expression&gt;, &lt;Dates&gt;, &lt;Filter&gt;, &lt;YearEndDate&gt;)
```

เพิ่มตัวกรองและกำหนดวันสิ้นปีบัญชี ก่อนประเมิน ณ วันสิ้นปี

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| Expression | Yes | scalar |  | นิพจน์หรือมาตรวัดที่ต้องการประเมิน เช่น [Balance], [Cash], SUMX(...) มันสามารถเป็นฟังก์ชันหรือมาตรวัด |
| Dates | Yes | column |  | คอลัมน์วันที่จากตารางวันที่/ปฏิทิน ต้องเป็น Date/DateTime column ที่ถูกทำเครื่องหมายเป็น Date Table ในโมเดล ไม่ใช่เพียงคอลัมน์วันที่ธรรมดา |
| Filter | No | filter |  | ตัวกรอง Boolean หรือตารางที่ใช้กรองเพิ่มเติมก่อนประเมิน Expression เช่น Product[Category] = "A" หรือ FILTER(...) |
| YearEndDate | No | text |  | สตริงข้อความระบุวันสิ้นปีบัญชี ในรูปแบบ "MM-DD" เช่น "12-31" (ค่าเริ่มต้น) หรือ "03-31" สำหรับปีบัญชีสิ้นสุด 31 มีนาคม |

## เคสการใช้งาน

### ยอดคงเหลือปลายปี

เช่น ยอดเงินคงเหลือ ณ สิ้นปี

_เหมาะกับ:_ closing-balance-year

### ปิดปีบัญชีตามวันสิ้นปีบัญชี

กำหนด YearEndDate ให้สอดคล้องกับปีบัญชีขององค์กร

_เหมาะกับ:_ fiscal-year-closing

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ยอดคงเหลือสิ้นปีธรรมชาติ

```excel
Year End Balance = 
CLOSINGBALANCEYEAR(
    [Balance],
    'Calendar'[Date]
)
```

**ผลลัพธ์:** `ส่งคืนค่า [Balance] ณ วันที่ 31 ธันวาคมของปีในบริบทปัจจุบัน`

หากบริบทคือ 2024 มันจะหาวันที่ 31 ธันวาคม 2024 แล้วประเมิน [Balance] ณ วันนั้น เหมาะกับรายงานปลายปี

### 2. ตัวอย่างที่ 2: ปีบัญชีที่สิ้นสุด 30 มิถุนายน

```excel
Fiscal Year End Balance = 
VAR FiscalYearEnd = "06-30"
RETURN
CLOSINGBALANCEYEAR(
    [Balance],
    'Calendar'[Date],
    TRUE(),
    FiscalYearEnd
)
```

**ผลลัพธ์:** `ส่งคืนค่า [Balance] ณ วันที่ 30 มิถุนายนของปีบัญชี`

ถ้าบริษัทของคุณใช้ปีบัญชีสิ้นสุด 30 มิถุนายน ใช้พารามิเตอร์ YearEndDate เพื่อบอกว่าวันสิ้นปี คือ 06-30 ส่วน TRUE() คือตัวกรองว่างเพื่อเว้นพารามิเตอร์ Filter

### 3. ตัวอย่างที่ 3: ยอดคงเหลือสิ้นปี ตามหมวดสินค้า

```excel
Balance Year End by Category = 
CLOSINGBALANCEYEAR(
    [Balance],
    'Calendar'[Date],
    Product[Category] = "Electronics"
)
```

**ผลลัพธ์:** `ส่งคืนค่า [Balance] ณ วันสิ้นปี สำหรับเฉพาะสินค้า Category "Electronics"`

เพิ่มตัวกรองในพารามิเตอร์ที่สามเพื่อจำกัด Expression ให้ประเมินเฉพาะแถวที่ตรงกับเงื่อนไข ช่วยเมื่อต้องการยอดคงเหลือสิ้นปีแยกตามหมวดหมู่

### 4. ตัวอย่างที่ 4: เปรียบเทียบยอดต้นปี กับ สิ้นปี

```excel
Year Over Year Balance Change = 
VAR EndYearBalance = CLOSINGBALANCEYEAR(
    [Balance],
    'Calendar'[Date]
)
VAR BeginYearBalance = OPENINGBALANCEYEAR(
    [Balance],
    'Calendar'[Date]
)
RETURN
EndYearBalance - BeginYearBalance
```

**ผลลัพธ์:** `ส่งคืนผลต่างระหว่างยอดต้นปีและยอดสิ้นปี`

ใช้ VAR เก็บผลลัพธ์จาก CLOSINGBALANCEYEAR และ OPENINGBALANCEYEAR แล้วค่อยหาผลต่าง เหมาะสำหรับดูว่ายอดคงเหลือเปลี่ยนแปลงไปเท่าไรตลอดปี

## หมายเหตุเพิ่มเติม

- ผมแนะนำให้เก็บผลลัพธ์ใน VAR ก่อน เพราะอ่านง่ายกว่าและ Debug ได้ดีกว่า: VAR EndYear = CLOSINGBALANCEYEAR(...) RETURN EndYear

- ระวัง Year-End Date ด้วย ถ้าลืมตั้ง YearEndDate สำหรับปีบัญชีที่ไม่ใช่ 12/31 มันจะใช้เป็น 12/31 โดยค่าเริ่มต้น แล้วได้ผลลัพธ์ผิด

- ถ้าต้อง Snapshot เมื่อสิ้นเดือน/ปลายสัปดาห์ ไม่ต้องใช้ CLOSINGBALANCEYEAR ให้ดู CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER หรือ CLOSINGBALANCEWEEK แทน

- ส่วนตัวผม มักเจอปัญหาเมื่อ Expression เป็นมาตรวัดที่มี CALCULATE ซ้อนอยู่แล้ว Context Transition อาจเกิดสองครั้ง ให้ทดสอบค่าเสมอ

- ถ้ายอดคงเหลือที่ติดลบ (Liabilities) อย่าลืมระวังสัญลักษณ์เมื่อรวมกับ Assets ที่เป็นบวก

## คำถามที่พบบ่อย

**Q: CLOSINGBALANCEYEAR ต่างจาก ENDOFYEAR อย่างไร?**

ENDOFYEAR ส่งคืน "ชุดวันที่" (ตาราง) ของวันสิ้นปี ส่วน CLOSINGBALANCEYEAR ประเมิน Expression ณ วันสิ้นปีโดยตรง แล้วส่งคืน "ค่าสเกลาร์" (เลขตัวเดียว) หากอยากได้วันที่จริงของวันสิ้นปี ให้ใช้ ENDOFYEAR ถ้าอยากได้ค่า Balance ที่จุดเวลานั้น ให้ใช้ CLOSINGBALANCEYEAR

**Q: ตารางวันที่ต้องมีความต่อเนื่องหรือไม่?**

ต้องอย่างแน่นอน ตารางวันที่ต้องมี "วันที่ต่อเนื่องทั้งหมด" ตั้งแต่ 1 มกราคม ถึง 31 ธันวาคม (หรือสิ้นปีบัญชี) ของแต่ละปี ถ้าหายวันไป CLOSINGBALANCEYEAR อาจจะหาวันสิ้นปีไม่เจอ หรือให้ผลลัพธ์ที่ผิด คุณต้องทำเครื่องหมายตารางเป็น Date Table ด้วย

**Q: เมื่อไหร่ใช้ CLOSINGBALANCEYEAR แทน SUM ธรรมดา?**

ใช้ CLOSINGBALANCEYEAR เมื่อมาตรวัดเป็น "Semi-additive" ที่ต้องการ Snapshot ขณะเวลา ไม่ใช่ผลรวม เช่น Balance (ยอดคงเหลือ), Cash (เงินสด), Stock (คงเหลือสินค้า) ส่วน SUM ธรรมดาใช้สำหรับ "Additive" มาตรวัด เช่น Sales (ยอดขาย), Revenue (รายรับ) ที่คุณต้องการรวมตลอดปี

**Q: Context Transition คืออะไร? ทำไมสำคัญ?**

Context Transition คือการเปลี่ยนจาก Row Context (แต่ละแถวในตาราง) เป็น Filter Context (ชุดตัวกรองทั้งหมด) ฟังก์ชันแบบ Time Intelligence เช่น CLOSINGBALANCEYEAR ทำสิ่งนี้อัตโนมัติ เพราะต้องหาวันสิ้นปี ซึ่งเป็นงาน Filter Context ถ้าเข้าใจสิ่งนี้ คุณจะเข้าใจว่าทำไม CLOSINGBALANCEYEAR ทำงานกับ Row Context (ในเมeasures ในการคำนวณ Measure ใช้ Iterator เช่น SUMX) ได้

**Q: ใช้ CLOSINGBALANCEYEAR ได้หลายปีพร้อมกันไหม?**

ไม่ CLOSINGBALANCEYEAR ทำงานบนบริบทวันที่ปัจจุบัน (current context) เท่านั้น หากต้องการเทียบหลายปี ต้องใช้ CALCULATE เพิ่มเติมเพื่อเปลี่ยน Filter Context ตัวอย่างเช่น CALCULATE(CLOSINGBALANCEYEAR(...), YEAR('Calendar'[Date]) = 2024) หรือลูป SUMX ผ่านหลายปี

**Q: DirectQuery รองรับ CLOSINGBALANCEYEAR หรือไม่?**

ไม่ CLOSINGBALANCEYEAR ไม่รองรับ DirectQuery Mode สำหรับ Calculated Columns หรือ Row-Level Security (RLS) เหมาะสำหรับ Import Mode เท่านั้น ถ้าใช้ DirectQuery ลองพิจารณา OPENINGBALANCEQUARTER หรือ Stored Procedure แทน

## ฟังก์ชันที่เกี่ยวข้อง

- closingbalancemonth
- closingbalancequarter
- closingbalanceweek
- endofyear
- calculate
- previousyear

## แหล่งข้อมูลเพิ่มเติม

- [DAX Guide: CLOSINGBALANCEYEAR](https://dax.guide/closingbalanceyear/) _(guide)_
- [Microsoft Learn: CLOSINGBALANCEYEAR Function](https://learn.microsoft.com/en-us/dax/closingbalanceyear-function-dax) _(official)_
- [SQLBI: Time Intelligence in DAX](https://www.sqlbi.com/articles/time-intelligence-in-dax/) _(guide)_
- [Microsoft Docs: Date Table Requirements](https://learn.microsoft.com/en-us/analysis-services/tabular-models/date-tables-dax) _(official)_

---

_Source: [https://www.thepexcel.com/functions/dax/time-intelligence/closingbalanceyear-dax/](https://www.thepexcel.com/functions/dax/time-intelligence/closingbalanceyear-dax/)_
