Thep Excel

DATEDIFคำนวณระยะห่างระหว่างวันที่ (ปี/เดือน/วัน)

DATEDIF เป็นฟังก์ชัน ‘ลับ’ (Hidden Function) ที่ใช้คำนวณระยะเวลาระหว่างวันที่สองวัน โดยสามารถเลือกหน่วยได้: ปี, เดือน, วัน, หรือการรวมกัน เหมาะใช้คำนวณอายุ, อายุงาน, หรือระยะเวลาโครงการอย่างแม่นยำ

fx
=DATEDIF(start_date, end_date, unit)

ความนิยม8/10
ความยาก3/10
ประโยชน์8/10

อัปเดต 2 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
start_date Date วันที่เริ่มต้น (ต้องน้อยกว่าหรือเท่ากับ end_date หากมากกว่าจะได้ #NUM! error)
end_date Date วันที่สิ้นสุด (ต้องมากกว่าหรือเท่ากับ start_date)
unit Text หน่วยที่ต้องการคำนวณ (ต้องใส่ในเครื่องหมายคำพูด): “Y”=ปี, “M”=เดือน, “D”=วัน, “YM”=เศษเดือน(ไม่นับปี), “MD”=เศษวัน(ไม่นับเดือน), “YD”=เศษวัน(ไม่นับปี)

Additional Notes

ฟังก์ชัน DATEDIF (Date Difference) มาจากยุคของ Lotus 1-2-3 เลยนะ เพราะฉะนั้น Excel จึงไม่ลงท้ายให้เห็น Tooltip ในแถบสูตร

แต่ประโยชน์ของฟังก์ชันตัวนี้มหาศาล! บอกได้เลยว่าถ้าต้องการนับว่าห่างกันกี่ปี เดือน วัน DATEDIF คือคำตอบตรงทำการ โดยเฉพาะตอน feature “YM” (เศษเดือนไม่นับปี) กับ “MD” (เศษวันไม่นับเดือน) มันจะช่วยให้ได้ผลลัพธ์ที่ละเอียดมากๆ เช่น “2 ปี 5 เดือน 13 วัน” อย่างเดียว

ข้อควรระวังคือ DATEDIF มี bug บ้างใน Unit “MD” และ “YD” บางสถานการณ์ (โดยเฉพาะกับปีอธิกสุรทิน) ถ้าสงสัยผล ลองเช็คดูหรือหาทางเลือกอื่นเช่น INDEX+MATCH หรือ DAYS() ได้นะ 😎

How it works

คำนวณอายุพนักงาน/อายุงาน

ใช้คำนวณอายุเพื่อพิจารณาเกษียณ หรือคำนวณอายุงานเพื่อปรับฐานเงินเดือน/โบนัส

ระยะเวลาสัญญา (Contract Duration)

ตรวจสอบว่าสัญญาเหลือระยะเวลาอีกกี่เดือน กี่วัน

Examples

คำนวณอายุ (ปีเต็ม)DATEDIF("1990-05-15", TODAY(), "Y")

คำนวณจำนวนปีเต็มจากวันเกิด 15 มีนาคม 1990 จนถึงวันนี้ หน่วย "Y" คือการนับปี โดยปีต้องนับเต็มแล้วจึงนับ

fx
=DATEDIF("1990-05-15", TODAY(), "Y")

ผลลัพธ์34 (ตัวอย่าง)
คำนวณอายุงาน (ปี-เดือน-วัน) ด้วยฟอร์มแตรDATEDIF(A2, B2, "Y") & " ปี " & DATEDIF(A2, B2, "YM") & " เดือน " & DATEDIF(A2, B2, "MD") & " วัน"

สมมติ A2 = วันที่เข้างาน (1-1-2022), B2 = วันนี้ เราใช้ "Y" หาปีเต็ม, "YM" หาเศษเดือนที่ไม่นับปี, "MD" หาเศษวัน แล้วนำมาต่อกันด้วย & เป็นข้อความ

fx
=DATEDIF(A2, B2, "Y") & " ปี " & DATEDIF(A2, B2, "YM") & " เดือน " & DATEDIF(A2, B2, "MD") & " วัน"

ผลลัพธ์2 ปี 4 เดือน 13 วัน
หาจำนวนวันทั้งหมดDATEDIF(A1, B1, "D")

หาว่า A1 ถึง B1 ห่างกันกี่วัน โดยใช้หน่วย "D" (Day) ผลลัพธ์เหมือนกับการลบ B1-A1 แต่ DATEDIF ชัดเจนกว่าเรื่องจำนวนตัวเลข

fx
=DATEDIF(A1, B1, "D")

ผลลัพธ์45
ตรวจสอบวันหมดอายุของสินค้าIF(DATEDIF(TODAY(), A3, "D") > 30, "ยังปลอดภัย", "ใกล้หมดอายุแล้ว")

สมมติ A3 = วันหมดอายุ ใช้ DATEDIF หาว่าเหลือกี่วัน ถ้า > 30 วันแสดง "ยังปลอดภัย" ไม่ก็ "ใกล้หมดอายุแล้ว" โดยใช้ IF

fx
=IF(DATEDIF(TODAY(), A3, "D") > 30, "ยังปลอดภัย", "ใกล้หมดอายุแล้ว")

ผลลัพธ์ยังปลอดภัย
คำนวณ Project Duration ในเดือนDATEDIF("2025-01-15", "2025-06-30", "M")

คำนวณว่าจากวันที่ 15 มกราคม ถึง 30 มิถุนายน 2025 คือกี่เดือนเต็ม หน่วย "M" นับเดือนเต็มเท่านั้น ผลลัพธ์ = 5 เดือน

fx
=DATEDIF("2025-01-15", "2025-06-30", "M")

ผลลัพธ์5

FAQs

ทำไมพิมพ์ DATEDIF แล้วไม่มี Tooltip แนะนำ?+

เพราะ DATEDIF เป็น Compatibility Function (ฟังก์ชันรักษาความเข้ากันได้) มาจากยุคสมัย Lotus 1-2-3 Excel จึงซ่อนไว้ โดยมิให้ Tooltip ขึ้นมา แต่ยังสามารถพิมพ์ใช้งานได้ปกติโดยไม่มีปัญหา

หน่วย "MD" ทำไมถึงมีปัญหา?+

Microsoft เองก็รับมาแล้วว่า DATEDIF มี Bug ใน "MD" unit บางกรณี (เช่นตอนคำนวณเกี่ยวกับปีอธิกสุรทิน) ที่แนะนำคือหลีกเลี่ยงใช้ "MD" ถ้าต้องใช้ ลองตรวจสอบผลลัพธ์ให้ดีๆ หรือใช้ =MOD(B1, A1, 32) แทน

ถ้า start_date มากกว่า end_date จะเกิดอะไร?+

DATEDIF จะส่งออก #NUM! error ทันที ฟังก์ชันนี้ต้องการให้ start_date น้อยกว่า end_date เสมอ ถ้าต้องการให้ยืดหยุ่น ให้ครอบด้วย IFERROR หรือตรวจสอบก่อนด้วย IF

DATEDIF กับ DAYS() ต่างกันอย่างไร?+

DAYS(end_date, start_date) บอกจำนวนวันทั้งหมดเท่านั้น ส่วน DATEDIF(start_date, end_date, "D") ก็เหมือนกัน แต่ DATEDIF ยังทำให้คำนวณปี/เดือน/เศษต่างๆ ได้ ถ้าแค่นับวัน B1-A1 ก็ได้ 😎

เคล็ดลับอะไรสำหรับคำนวณอายุให้ถูกต้อง?+

ใช้ =DATEDIF(birth_date, TODAY(), "Y") เป็นพื้นฐาน บอกได้เลยว่าวิธีนี้คำนวณแบบ "full year" เหมือนวิธีการหาอายุตามปกติ ถ้าต้องการละเอียดถึงเดือน-วัน ก็ต่อหลายๆ unit เข้าด้วยกัน

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ DATEDIF จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้DATEDIFDate and Time
Date and Time (9)
DATE

DATE สร้างวันที่จากตัวเลขปี เดือน วัน แยกกัน รองรับการบวก/ลบเดือนที่เกิน 12 หรือค่าลบ และปรับวันที่ให้อัตโนมัติ เหมาะสำหรับสร้างวันที่จากสูตรหรือใช้ในเงื่อนไข SUMIFS COUNTIFS AVERAGEIFS

DAY

DAY คืนค่าวันที่เป็นตัวเลขจำนวนเต็มระหว่าง 1 ถึง 31 จากค่า Serial Number ของวันที่ที่ระบุ ทำให้เราสามารถดึงเฉพาะ "เลขวัน" ออกมาใช้งานได้ โดยไม่ต้องสนใจเดือนหรือปี

DAYS

ส่งกลับจำนวนวันระหว่างวันที่สองวัน (จบ – เริ่ม) คำนวณผลต่างของวันที่อย่างง่ายดาย

DAYS360

DAYS360 คำนวณจำนวนวันระหว่างสองวันที่โดยใช้เกณฑ์ปีละ 360 วัน (เดือนละ 30 วัน) เป็นมาตรฐานในงานบัญชีและการเงิน รองรับ 2 วิธีคำนวณ: US (NASD) และ European

MONTH

MONTH คืนค่าเดือนเป็นตัวเลขจำนวนเต็มระหว่าง 1 (มกราคม) ถึง 12 (ธันวาคม) จากค่า Serial Number ของวันที่ที่ระบุ เป็นฟังก์ชันพื้นฐานที่ใช้บ่อยในการทำรายงานสรุปยอดขายรายเดือน หรือการคำนวณไตรมาส

NETWORKDAYS

NETWORKDAYS นับจำนวนวันทำงานทั้งหมด (ไม่นับเสาร์-อาทิตย์) ระหว่างวันที่สองวัน และสามารถหักวันหยุดนักขัตฤกษ์ออกได้ เหมาะสำหรับคำนวณระยะเวลาโปรเจกต์, ลาของพนักงาน, หรือเดือนวันทำงาน

TODAY

TODAY คืนค่า Serial Number ของวันที่ปัจจุบันตามเวลาของเครื่องคอมพิวเตอร์ โดยเวลาจะเป็น 0:00:00 เสมอ
.
ที่เจ๋งคือฟังก์ชันนี้เป็นประเภท Volatile ที่จะคำนวณใหม่ทุกครั้งที่มีการเปลี่ยนแปลงใดๆ ในชีท ที่ต้องระวังคือไม่เหมาะกับการบันทึกวันที่ทำรายการ (Transaction Date) ที่ต้องการให้คงที่ครับ เพราะมันจะเปลี่ยนทุกครั้งที่เปิดไฟล์

YEAR

YEAR ดึงเลขปี ค.ศ. (4 หลัก เช่น 2025) จากวันที่ที่ระบุ เหมาะใช้จัดกลุ่มข้อมูลรายปี คำนวณอายุ หรือวิเคราะห์ข้อมูลตามช่วงเวลา

YEARFRAC

YEARFRAC คำนวณว่าระหว่างวันที่สองวัน ผ่านไปแล้วกี่เปอร์เซ็นต์ของปี เป็นเลขทศนิยม

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่