การบอกอายุว่า “25 ปี” เฉยๆ ไม่พอสำหรับงาน HR หรือทะเบียนประวัติ ที่มักต้องการ “25 ปี 4 เดือน 12 วัน” แบบละเอียด ทำได้ด้วยการใช้ DATEDIF สามครั้งด้วยหน่วยต่างกัน แล้วนำมาต่อกัน บทความนี้จะแสดงสูตรเต็มพร้อมวิธีปรับใช้กับอายุงานและการนับถอยหลังวันเกิด
สูตรเต็ม: อายุเป็น ปี / เดือน / วัน
C2fx
=DATEDIF(B2,TODAY(),"y")&" ปี "&DATEDIF(B2,TODAY(),"ym")&" เดือน "&DATEDIF(B2,TODAY(),"md")&" วัน"| A | B | C | |
|---|---|---|---|
| 1 | ชื่อ | วันเกิด | อายุ |
| 2 | สมชาย | 15/04/2000 | 26 ปี 4 เดือน 14 วัน |
| 3 | วิภา | 02/11/1995 | 30 ปี 9 เดือน 27 วัน |
สมมติวันนี้คือ 29 ส.ค. 2026 DATEDIF ทำงานสามครั้ง
| หน่วย | ความหมาย |
"y" |
จำนวนปีเต็ม |
"ym" |
จำนวนเดือนที่เหลือ หลังหักปีเต็มออกแล้ว |
"md" |
จำนวนวันที่เหลือ หลังหักปีและเดือนเต็มออกแล้ว |
ปรับใช้กับอายุงาน
C2fx
=DATEDIF(B2,TODAY(),"y")&" ปี "&DATEDIF(B2,TODAY(),"ym")&" เดือน"| A | B | C | |
|---|---|---|---|
| 1 | พนักงาน | วันเริ่มงาน | อายุงาน |
| 2 | สมชาย | 01/06/2021 | 5 ปี 2 เดือน |
| 3 | วิภา | 16/01/2024 | 2 ปี 7 เดือน |
ตัดหน่วยวันออกเหลือแค่ปีกับเดือน เหมาะกับการคิดสิทธิ์วันลาพักร้อนหรือโบนัสตามอายุงาน ถ้าอยากได้อายุงานเป็นทศนิยม (เช่น 5.2 ปี) ใช้ YEARFRAC(B2,TODAY())
นับถอยหลังวันเกิดปีนี้
C2fx
=DATE(YEAR(TODAY())+(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))<TODAY()),MONTH(B2),DAY(B2))-TODAY()| A | B | C | |
|---|---|---|---|
| 1 | ชื่อ | วันเกิด | อีกกี่วันถึงวันเกิด |
| 2 | สมชาย | 15/04/2000 | 229 |
สูตรสร้างวันเกิดของปีนี้ ถ้าผ่านไปแล้วให้บวกปีเป็นปีหน้า แล้วลบด้วยวันนี้ ได้จำนวนวันที่เหลือ ใช้ทำรายการแจ้งเตือนวันเกิดพนักงาน
ข้อควรรู้
- DATEDIF ไม่มีในรายการฟังก์ชัน — ต้องพิมพ์เองทั้งชื่อ Excel ไม่ช่วยเติมให้ แต่ใช้งานได้ทุกเวอร์ชัน
- หน่วย
"md"มีจุดบกพร่องบางกรณี — เมื่อวันที่ปลายทางมีวันน้อยกว่าวันเกิด อาจได้ค่าติดลบหรือเพี้ยนในบางเดือน ถ้าต้องแม่นยำระดับวันในงานกฎหมาย ควรตรวจซ้ำด้วยมือ - วันเกิดต้องเป็นวันที่จริง — ถ้าเป็นข้อความหรือ พ.ศ. ให้แปลงก่อนตามบทความ แปลงวันที่ พ.ศ.
- อยากได้อายุ ณ วันที่อื่น — เปลี่ยน TODAY() เป็นเซลล์วันที่อ้างอิง เช่น วันสิ้นปี