DATEDIF เป็นฟังก์ชัน ‘ลับ’ (Hidden Function) ที่ใช้คำนวณระยะเวลาระหว่างวันที่สองวัน โดยสามารถเลือกหน่วยได้: ปี, เดือน, วัน, หรือการรวมกัน เหมาะใช้คำนวณอายุ, อายุงาน, หรือระยะเวลาโครงการอย่างแม่นยำ
=DATEDIF(start_date, end_date, unit)
=DATEDIF(start_date, end_date, unit)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| start_date | Date | Yes | วันที่เริ่มต้น (ต้องน้อยกว่าหรือเท่ากับ end_date หากมากกว่าจะได้ #NUM! error) | |
| end_date | Date | Yes | วันที่สิ้นสุด (ต้องมากกว่าหรือเท่ากับ start_date) | |
| unit | Text | Yes | หน่วยที่ต้องการคำนวณ (ต้องใส่ในเครื่องหมายคำพูด): “Y”=ปี, “M”=เดือน, “D”=วัน, “YM”=เศษเดือน(ไม่นับปี), “MD”=เศษวัน(ไม่นับเดือน), “YD”=เศษวัน(ไม่นับปี) |
ใช้คำนวณอายุเพื่อพิจารณาเกษียณ หรือคำนวณอายุงานเพื่อปรับฐานเงินเดือน/โบนัส
ตรวจสอบว่าสัญญาเหลือระยะเวลาอีกกี่เดือน กี่วัน
DATEDIF("1990-05-15", TODAY(), "Y")=DATEDIF("1990-05-15", TODAY(), "Y")
34 (ตัวอย่าง)
DATEDIF(A2, B2, "Y") & " ปี " & DATEDIF(A2, B2, "YM") & " เดือน " & DATEDIF(A2, B2, "MD") & " วัน"=DATEDIF(A2, B2, "Y") & " ปี " & DATEDIF(A2, B2, "YM") & " เดือน " & DATEDIF(A2, B2, "MD") & " วัน"
2 ปี 4 เดือน 13 วัน
DATEDIF(A1, B1, "D")=DATEDIF(A1, B1, "D")
45
IF(DATEDIF(TODAY(), A3, "D") > 30, "ยังปลอดภัย", "ใกล้หมดอายุแล้ว")=IF(DATEDIF(TODAY(), A3, "D") > 30, "ยังปลอดภัย", "ใกล้หมดอายุแล้ว")
ยังปลอดภัย
DATEDIF("2025-01-15", "2025-06-30", "M")=DATEDIF("2025-01-15", "2025-06-30", "M")
5
เพราะ DATEDIF เป็น Compatibility Function (ฟังก์ชันรักษาความเข้ากันได้) มาจากยุคสมัย Lotus 1-2-3 Excel จึงซ่อนไว้ โดยมิให้ Tooltip ขึ้นมา แต่ยังสามารถพิมพ์ใช้งานได้ปกติโดยไม่มีปัญหา
Microsoft เองก็รับมาแล้วว่า DATEDIF มี Bug ใน “MD” unit บางกรณี (เช่นตอนคำนวณเกี่ยวกับปีอธิกสุรทิน) ที่แนะนำคือหลีกเลี่ยงใช้ “MD” ถ้าต้องใช้ ลองตรวจสอบผลลัพธ์ให้ดีๆ หรือใช้ =MOD(B1, A1, 32) แทน
DATEDIF จะส่งออก #NUM! error ทันที ฟังก์ชันนี้ต้องการให้ start_date น้อยกว่า end_date เสมอ ถ้าต้องการให้ยืดหยุ่น ให้ครอบด้วย IFERROR หรือตรวจสอบก่อนด้วย IF
DAYS(end_date, start_date) บอกจำนวนวันทั้งหมดเท่านั้น ส่วน DATEDIF(start_date, end_date, “D”) ก็เหมือนกัน แต่ DATEDIF ยังทำให้คำนวณปี/เดือน/เศษต่างๆ ได้ ถ้าแค่นับวัน B1-A1 ก็ได้ 😎
ใช้ =DATEDIF(birth_date, TODAY(), “Y”) เป็นพื้นฐาน บอกได้เลยว่าวิธีนี้คำนวณแบบ “full year” เหมือนวิธีการหาอายุตามปกติ ถ้าต้องการละเอียดถึงเดือน-วัน ก็ต่อหลายๆ unit เข้าด้วยกัน
ฟังก์ชัน DATEDIF (Date Difference) มาจากยุคของ Lotus 1-2-3 เลยนะ เพราะฉะนั้น Excel จึงไม่ลงท้ายให้เห็น Tooltip ในแถบสูตร
แต่ประโยชน์ของฟังก์ชันตัวนี้มหาศาล! บอกได้เลยว่าถ้าต้องการนับว่าห่างกันกี่ปี เดือน วัน DATEDIF คือคำตอบตรงทำการ โดยเฉพาะตอน feature “YM” (เศษเดือนไม่นับปี) กับ “MD” (เศษวันไม่นับเดือน) มันจะช่วยให้ได้ผลลัพธ์ที่ละเอียดมากๆ เช่น “2 ปี 5 เดือน 13 วัน” อย่างเดียว
ข้อควรระวังคือ DATEDIF มี bug บ้างใน Unit “MD” และ “YD” บางสถานการณ์ (โดยเฉพาะกับปีอธิกสุรทิน) ถ้าสงสัยผล ลองเช็คดูหรือหาทางเลือกอื่นเช่น INDEX+MATCH หรือ DAYS() ได้นะ 😎