ฝ่ายบุคคลต้องคิดอายุงาน วันครบทดลองงาน วันต่อสัญญา ทุกเดือน — ถ้านับด้วยปฏิทิน พลาดวันเดียวก็กระทบเงินเดือนและสิทธิ์ของพนักงาน
บทความนี้รวมสูตรวันที่ที่ใช้ในงานจริง: DATE, DATEDIF, EDATE, EOMONTH และวิธีจัดการปี พ.ศ. ที่ทำให้สูตรวันที่ของคนไทยพังบ่อยที่สุด ทุกตัวอย่างตรวจในไฟล์ Google Sheets ภาษาไทยจริงแล้ว
เข้าใจก่อน: วันที่ใน Sheets คือตัวเลข
ทุกวันที่ถูกเก็บเป็นจำนวนวันนับจากวันตั้งต้น (13/10/2026 เก็บเป็น 46308) สิ่งที่เห็นเป็น "13/10/2026" เป็นแค่รูปแบบการแสดงผล นี่คือเหตุผลที่เอาวันที่มาบวกลบกันได้ — วันที่ + 30 = อีก 30 วันข้างหน้า และ วันที่ − วันที่ = จำนวนวันที่ห่างกัน
| อยากได้อะไร | สูตร | หมายเหตุ |
|---|---|---|
| สร้างวันที่จากปี เดือน วัน | =DATE(2026,10,13) | ปีต้องเป็น ค.ศ. |
| ดึงปี / เดือน / วัน | =YEAR(A2) · =MONTH(A2) · =DAY(A2) | ได้เป็นตัวเลข |
| อายุ / อายุงานเป็นปีเต็ม | =DATEDIF(A2,TODAY(),"Y") | "M" = เดือน, "D" = วัน |
| อีก N เดือนข้างหน้า | =EDATE(A2,3) | วันเดียวกันของ 3 เดือนถัดไป |
| วันสุดท้ายของเดือน | =EOMONTH(A2,0) | 1 = เดือนหน้า, -1 = เดือนก่อน |
| อีก N วันทำการ | =WORKDAY(A2,10) | ข้ามเสาร์-อาทิตย์ |
ตัวอย่าง 1: อายุงาน · ครบทดลองงาน · ครบรอบสัญญา

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)
ดูเป็นตาราง (ก๊อปตัวเลขได้)
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | ชื่อ | วันเริ่มงาน | อายุงาน | ครบ 119 วัน | ครบ 1 ปี | ปีที่เริ่ม (พ.ศ.) |
| 2 | สมชาย | 15/03/2019 | 7 ปี 6 เดือน | 12/07/2019 | 15/03/2020 | 2562 |
| 3 | วิภา | 01/08/2026 | 0 ปี 2 เดือน | 28/11/2026 | 01/08/2027 | 2569 |
| 4 | มานพ | 10/01/2024 | 2 ปี 9 เดือน | 08/05/2024 | 10/01/2025 | 2567 |
| 5 | ||||||
| 6 | วันนี้ | 13/10/2026 |
สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):
- C2:C4
=DATEDIF(B2,$B$6,"Y")&" ปี "&DATEDIF(B2,$B$6,"YM")&" เดือน" - D2:D4
=B2+119 - E2:E4
=EDATE(B2,12) - F2:F4
=YEAR(B2)+543
ในไฟล์จริงช่อง B6 ใส่ =TODAY() แทนวันที่ตายตัว อายุงานจะขยับเองทุกวัน · Google Sheets จัดรูปแบบผลของ B2+119 และ EDATE เป็นวันที่ให้เอง แต่ใน Excel ผลของ EDATE จะออกมาเป็นตัวเลข เช่น 43905 ต้องตั้งรูปแบบเซลล์เป็นวันที่เอง
- 1
อายุงานแบบ "7 ปี 6 เดือน"
DATEDIF ตัว"Y"ให้ปีเต็ม ตัว"YM"ให้เดือนที่เหลือหลังหักปีเต็มแล้ว เอามาต่อกันด้วย & - 2
ครบทดลองงาน
บวกจำนวนวันตรง ๆ ได้เลย=B2+119เพราะวันที่คือตัวเลข - 3
ครบรอบเป็นเดือน/ปี
ใช้EDATEแทนการบวก 365 วัน เพราะปีอธิกสุรทิน (มี 29 ก.พ.) จะทำให้คลาดไป 1 วัน
ตัวอย่าง 2: วันสิ้นเดือน วันแรกของเดือน ชื่อวัน
ใช้บ่อยกับรอบบิล รอบเงินเดือน และรายงานสรุปรายเดือน:

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)
ดูเป็นตาราง (ก๊อปตัวเลขได้)
| A | B | |
|---|---|---|
| 1 | อยากได้ | ผลลัพธ์ |
| 2 | วันที่ตั้งต้น | 13/10/2026 |
| 3 | วันสิ้นเดือนนี้ | 31/10/2026 |
| 4 | วันแรกของเดือนนี้ | 01/10/2026 |
| 5 | จำนวนวันในเดือนนี้ | 31 |
| 6 | วันสิ้นเดือนถัดไป | 30/11/2026 |
| 7 | วันที่จาก ปี เดือน วัน | 29/02/2028 |
| 8 | ชื่อวัน | วันอังคาร |
สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):
- B3
=EOMONTH(B2,0) - B4
=EOMONTH(B2,-1)+1 - B5
=DAY(EOMONTH(B2,0)) - B6
=EOMONTH(B2,1) - B7
=DATE(2028,2,29) - B8
=TEXT(B2,"dddd")
EOMONTH(วันที่, 0) = สิ้นเดือนนี้ · 1 = สิ้นเดือนหน้า · -1 = สิ้นเดือนที่แล้ว (บวก 1 วันจึงได้วันแรกของเดือนนี้) · ชื่อวันที่ได้เป็นภาษาไทยเพราะไฟล์ตั้งภาษาเป็นไทย ถ้าไฟล์เป็นภาษาอังกฤษจะได้ Tuesday
DATE ฉลาดกว่าที่คิด: ใส่เดือน 13 จะกลายเป็นมกราคมปีถัดไป ใส่วันที่ 0 จะได้วันสุดท้ายของเดือนก่อน — แต่เพื่อให้อ่านสูตรง่าย ใช้ EOMONTH ดีกว่า
ปัญหาของคนไทย: วันที่เป็นปี พ.ศ.
เอกสารไทยมักพิมพ์ปีเป็น พ.ศ. เมื่อพิมพ์ 15/03/2562 ลงชีต Sheets จะรับเป็นวันที่จริง — แต่เป็นปี ค.ศ. 2562 สูตรทุกตัวยังทำงานโดยไม่มี error ทำให้ไม่มีใครรู้ว่าอายุงานผิด จนกว่าจะเห็นค่าติดลบ:

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)
ดูเป็นตาราง (ก๊อปตัวเลขได้)
| A | B | C | D | |
|---|---|---|---|---|
| 1 | วันที่ที่พิมพ์ไว้ | ปีที่ Sheets อ่านได้ | แปลงเป็น ค.ศ. | อายุงาน ณ 13/10/2026 |
| 2 | 15/03/2562 | 2562 | 15/03/2019 | 7 |
| 3 | 01/08/2569 | 2569 | 01/08/2026 | 0 |
สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):
- B2:B3
=YEAR(A2) - C2:C3
=DATE(YEAR(A2)-543,MONTH(A2),DAY(A2)) - D2:D3
=DATEDIF(C2,DATE(2026,10,13),"Y")
ทดสอบในไฟล์ภาษาไทยจริง: พิมพ์ 15/03/2562 แล้ว Sheets รับเป็นวันที่ก็จริง แต่เป็นปี ค.ศ. 2562 (อีก 500 กว่าปีข้างหน้า) — ถ้าเอาไปลบกับ TODAY() จะได้ค่าติดลบมหาศาล ต้องแปลงด้วยคอลัมน์ C ก่อน
ข้อมูลเก่าเป็น พ.ศ. ไปแล้ว
อยากให้ผู้อ่านเห็น พ.ศ. แต่เก็บเป็น ค.ศ.
=DAY(A2)&"/"&MONTH(A2)&"/"&(YEAR(A2)+543) สำหรับพิมพ์บนเอกสารวันที่ชิดซ้าย = เป็นข้อความ
ข้อผิดพลาดอื่นที่เจอบ่อย
วันกับเดือนสลับกัน (3 ตุลาคม กลายเป็น 10 มีนาคม)
DATEDIF ขึ้น #NUM!
ผลการลบวันที่ออกมาเป็นวันที่
อยากได้ระบบพนักงานที่คิดอายุงานและวันลาให้เอง?
คำถามที่ถามบ่อย
คำนวณอายุงานเป็นปีและเดือนยังไง?
ใช้ =DATEDIF(วันเริ่มงาน,TODAY(),"Y")&" ปี "&DATEDIF(วันเริ่มงาน,TODAY(),"YM")&" เดือน" จะได้ข้อความเช่น 7 ปี 6 เดือน
หาวันสิ้นเดือนยังไง?
ใช้ =EOMONTH(วันที่,0) ถ้าอยากได้สิ้นเดือนหน้าเปลี่ยน 0 เป็น 1 และวันแรกของเดือนคือ =EOMONTH(วันที่,-1)+1
วันที่เป็น พ.ศ. คำนวณผิด แก้ยังไง?
Sheets อ่าน 15/03/2562 เป็นปี ค.ศ. 2562 ให้แปลงด้วย =DATE(YEAR(A2)-543,MONTH(A2),DAY(A2)) แล้วใช้ผลลัพธ์คำนวณต่อ
บวกเดือนให้วันที่ยังไง?
ใช้ =EDATE(วันที่,จำนวนเดือน) เช่น =EDATE(A2,12) คือวันเดียวกันของปีถัดไป อย่าบวก 30 หรือ 365 เพราะแต่ละเดือนมีวันไม่เท่ากัน
DATEDIF มีใน Google Sheets ไหม?
มี และใช้เหมือนใน Excel ทุกอย่าง แม้ Excel จะไม่แสดง DATEDIF ในรายการแนะนำสูตรก็ตาม
