Thep Excel

Date.EndOfMonth – หาวันสิ้นเดือน

คืนค่าวันสุดท้ายของเดือนที่กำหนด โดยรักษาประเภท (date, datetime, หรือ datetimezone) ไว้เหมือนเดิม

=Date.EndOfMonth(dateTime as any) as any

By ThepExcel AI Agent
3 December 2025

Function Metrics


Popularity
7/10

Difficulty
2/10

Usefulness
7/10

Syntax & Arguments

=Date.EndOfMonth(dateTime as any) as any

Argument Type Required Default Description
dateTime Date/DateTime/DateTimeZone Yes วันที่ที่ต้องการหาวันสิ้นเดือน สามารถเป็น date, datetime, หรือ datetimezone ก็ได้

Examples

ตัวอย่างพื้นฐาน: วันที่ธรรมดา
Date.EndOfMonth(#date(2025, 1, 15))
ใส่วันที่ 15 มกราคม 2025 ฟังก์ชันจะคืนค่าวันสิ้นเดือน คือ 31 มกราคม 2025
Power Query Formula:

=Date.EndOfMonth(#date(2025, 1, 15))

Result:

#date(2025, 1, 31)

ตัวอย่างที่ 2: DateTime พร้อมเวลา
Date.EndOfMonth(#datetime(2025, 5, 20, 14, 30, 45))
เมื่อใส่ datetime ฟังก์ชันจะคืนค่า datetime ของวันสิ้นเดือน โดยตั้งเวลาเป็น 23:59:59.9999999 เพื่อให้ครบถ้วนเต็มวัน
Power Query Formula:

=Date.EndOfMonth(#datetime(2025, 5, 20, 14, 30, 45))

Result:

#datetime(2025, 5, 31, 23, 59, 59.9999999)

ตัวอย่างที่ 3: DateTime with Timezone
Date.EndOfMonth(#datetimezone(2025, 5, 17, 5, 0, 0, -7, 0))
ฟังก์ชันจะรักษา timezone offset (-7 hours) ไว้ คืนค่าเป็น datetimezone ของวันสิ้นเดือนพร้อม timezone เดิม
Power Query Formula:

=Date.EndOfMonth(#datetimezone(2025, 5, 17, 5, 0, 0, -7, 0))

Result:

#datetimezone(2025, 5, 31, 23, 59, 59.9999999, -7, 0)

ตัวอย่างที่ 4: ใช้กับ Table.TransformColumns สำหรับ Month-End Reconciliation
let Sales = Table.FromRows( {{#date(2025, 1, 5), 1000}, {#date(2025, 1, 28), 2000}, {#date(2025, 2, 10), 1500}}, {"Date", "Amount"} ), MonthEnd = Table.Transfor…
ใช้ Table.TransformColumns เพื่อแปลงคอลัมน์ Date ทั้งหมดในตาราง ให้เป็นวันสิ้นเดือน สะดวกสำหรับการ group by month-end
Power Query Formula:

let
    Sales = Table.FromRows(
        {{#date(2025, 1, 5), 1000}, {#date(2025, 1, 28), 2000}, {#date(2025, 2, 10), 1500}},
        {"Date", "Amount"}
    ),
    MonthEnd = Table.TransformColumns(Sales, {{"Date", each Date.EndOfMonth(_), type date}})
in
    MonthEnd

Result:

ตารางที่มีคอลัมน์ Date ถูกแปลงเป็น: 31/01/2025 (สำหรับทั้งสองแถวในมกราคม) และ 28/02/2025 (สำหรับแถวกุมภาพันธ์)

FAQs

Date.EndOfMonth กับวันที่แต่ละเดือนที่มีจำนวนวันต่างกัน (28-31 วัน) ทำงานอย่างไร?

ฟังก์ชันนี้จะจัดการอัตโนมัติ ถ้าเป็นกุมภาพันธ์ปกติจะคืนค่า 28 วัน, ปีอธิกสุรทิน 29 วัน, เมษายน ก.ย. พ.ย. คืนค่า 30 วัน, เดือนอื่นคืนค่า 31 วัน ไม่ต้องจัดการเองเลย

ถ้าฉันใส่วันที่ 31 มกราคม จะได้ผลลัพธ์เป็นอะไร?

ยังคืนค่า 31 มกราคมเหมือนเดิม เพราะ 31 มกราคมก็คือวันสิ้นเดือนแล้ว ฟังก์ชันไม่สนว่าคุณใส่วันไหนในเดือนนั้น

ผลลัพธ์ที่ได้จะรักษาประเภท date/datetime/datetimezone ไว้หรือไม่?

ใช่ครับ ฟังก์ชันรักษาประเภทเดิม ถ้าใส่ date จะได้ date, ใส่ datetime จะได้ datetime, ใส่ datetimezone จะได้ datetimezone พร้อม timezone offset เดิม

แล้วถ้าผมต้องการวันแรกของเดือน?

ใช้ Date.StartOfMonth(dateTime) แทน ทำงานคล้ายกัน แต่คืนค่าวันแรกของเดือน

Resources & Related

Additional Notes

ฟังก์ชัน Date.EndOfMonth ใช้สำหรับคืนค่าวันสุดท้ายของเดือนจากวันที่ที่ระบุ ไม่ว่าคุณจะใส่วันใดในเดือนก็ตาม ฟังก์ชันนี้จะคืนค่าวันสิ้นเดือนนั้นอย่างแม่นยำ

ที่เจ๋งคือ Date.EndOfMonth จะรักษาประเภทข้อมูลเดิมไว้ – ถ้าใส่ date จะได้ date, ถ้าใส่ datetime จะได้ datetime พร้อมเวลา 23:59:59.9999999 เพื่อให้ครบถ้วนเต็มวี่นเดือน

ส่วนตัวผม ผมชอบใช้ Date.EndOfMonth แบบคู่กับ Table.TransformColumns เพื่อให้วันที่ในตารางมีค่าเป็นวันสิ้นเดือนทั้งหมด ถือว่าเป็น workaround ที่ดีสำหรับ financial reporting หรือ month-end reconciliation ครับ 😎

Leave a Reply

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