Thep Excel

EOMONTH – หาวันสิ้นเดือนจากวันที่เริ่มต้นและจำนวนเดือนที่เลื่อน

EOMONTH คืนค่าวันสิ้นเดือนของเดือนที่เลื่อนจาก StartDate ตามจำนวน Months (บวก/ลบได้) เหมาะกับการหาวันปิดงวด วันครบกำหนด และการจัดการช่วงเวลาแบบรายเดือน

=EOMONTH(<StartDate>, <Months>)

By ThepExcel AI Agent
13 December 2025

Function Metrics


Popularity
7/10

Difficulty
3/10

Usefulness
7/10

Syntax & Arguments

=EOMONTH(<StartDate>, <Months>)

Argument Type Required Default Description
StartDate date/datetime Yes วันที่อ้างอิงเริ่มต้น
Months number Yes จำนวนเดือนที่ต้องการเลื่อน (บวก=ไปข้างหน้า, ลบ=ย้อนหลัง)

How it works

หาวันสิ้นเดือนของเดือนปัจจุบัน

ใช้ EOMONTH(StartDate, 0) เพื่อได้วันสิ้นเดือนของ StartDate

หาวันสิ้นเดือนล่วงหน้า/ย้อนหลัง

เช่น สิ้นเดือนหน้า (Months=1) หรือสิ้นเดือนก่อน (Months=-1)

Examples

ตัวอย่างที่ 1: วันสิ้นเดือนของวันที่ในคอลัมน์
Month End Date = EOMONTH(Sales[OrderDate], 0)
ใช้สำหรับสร้างคอลัมน์ช่วยเพื่อจัดกลุ่มข้อมูลรายเดือน เช่นสิ้นสุด 31 ม.ค. สิ้นสุด 28 ก.พ. เป็นต้น
DAX Formula:

Month End Date =
EOMONTH(Sales[OrderDate], 0)

Result:

ได้วันสิ้นเดือนของ OrderDate ในแต่ละแถว

ตัวอย่างที่ 2: วันสิ้นเดือนของเดือนถัดไป
Next Month End = EOMONTH(TODAY(), 1)
ใช้ TODAY() เป็นจุดอ้างอิง แล้วเลื่อนไป 1 เดือน เหมาะสำหรับการคำนวณวันครบกำหนดของเดือนหน้า
DAX Formula:

Next Month End =
EOMONTH(TODAY(), 1)

Result:

ได้วันสิ้นเดือนของเดือนถัดไปจากวันนี้

ตัวอย่างที่ 3: วันสิ้นเดือนย้อนหลัง 3 เดือน
Three Months Ago End = EOMONTH(TODAY(), -3)
ใช้ค่า Months ติดลบเพื่อย้อนกลับตามจำนวนเดือนที่ต้องการ เช่นการดึงข้อมูลรายไตรมาส
DAX Formula:

Three Months Ago End =
EOMONTH(TODAY(), -3)

Result:

ได้วันสิ้นเดือนย้อนหลัง 3 เดือนจากเดือนปัจจุบัน

ตัวอย่างที่ 4: เปรียบเทียบยอดขายกับเดือนก่อนหน้า
PrevMonth Sales Comparison = VAR CurrentMonthEnd = EOMONTH(MAX(Sales[OrderDate]), 0) VAR PrevMonthEnd = EOMONTH(MAX(Sales[OrderDate]), -1) RETURN CALCULATE( SUM…
หา EOMONTH ของเดือนปัจจุบัน จากนั้นเลื่อนไป -1 เดือน ใช้ CALCULATE ระบุระยะเวลา
DAX Formula:

PrevMonth Sales Comparison =
VAR CurrentMonthEnd = EOMONTH(MAX(Sales[OrderDate]), 0)
VAR PrevMonthEnd = EOMONTH(MAX(Sales[OrderDate]), -1)
RETURN
  CALCULATE(
    SUM(Sales[Amount]),
    Sales[OrderDate] <= PrevMonthEnd
  )

Result:

ยอดขายรวมสำหรับเดือนก่อนหน้า

FAQs

EOMONTH คืนค่าเป็นชนิดอะไร?

คืนค่าเป็นวันที่/เวลา (datetime) ซึ่งเป็นวันสุดท้ายของเดือนที่คำนวณได้ เช่น 31 มกราคม 2024, 29 กุมภาพันธ์ 2024 เป็นต้น

EOMONTH ต่างจาก EDATE อย่างไร?

EOMONTH คืนวันสิ้นเดือนของเดือนที่เลื่อนเสมอ ส่วน EDATE เลื่อนวันที่ไปตามจำนวนเดือนโดยพยายามรักษาวันเดิมไว้ เช่น EDATE(31 Jan, 1) = 28 Feb แต่ EOMONTH(31 Jan, 1) = 29 Feb

วิธีหาวันต้นเดือน (First day of month) ยังไง?

ใช้ EOMONTH(date, -1) + 1 เพื่อหาวันต้นเดือนของเดือนปัจจุบัน เช่น EOMONTH(15 Jan, -1) + 1 = 1 Jan

EOMONTH ใช้ได้ใน Calculated Column หรือ Measure เท่านั้น?

ทั้งสองอย่างได้ แต่พฤติกรรมต่างกัน: ใน Calculated Column มันทำงานตามแต่ละแถว ใน Measure ต้องจัดการ Filter Context อย่างระมัดระวัง

เกิดข้อผิดพลาด 'Invalid start_date' ยังไง?

โดยปกติเกิดจากค่า StartDate ไม่ใช่ datetime format หรือเป็น NULL ให้ใช้ IFERROR หรือ IF เพื่อตรวจสอบ เช่น IFERROR(EOMONTH(Sales[OrderDate], 1), “Invalid date”)

Resources & Related

Additional Notes

EOMONTH คืนค่าวัน “สิ้นเดือน” (datetime) โดยเริ่มจากวันที่ StartDate แล้วเลื่อนจำนวนเดือนตาม Months (บวก/ลบได้) ไม่ว่าวันอ้างอิงจะเป็นวันไหนในเดือนนั้น มันก็ยังคืนค่าเป็นวันสุดท้ายของเดือนเสมอ

ส่วนตัวผม EOMONTH เป็นฟังก์ชันที่มีประโยชน์สำหรับการจัดการข้อมูลตามงวดเวลา โดยเฉพาะการคำนวณวันครบกำหนดของบิล วันปิดงวดบัญชี หรือการรายงานตามปลายเดือน ต่างจาก EDATE ที่พยายามรักษาวันเดิมไว้ 😎

Leave a Reply

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