---
title: DATEDIF – คำนวณระยะห่างระหว่างวันที่ (ปี/เดือน/วัน)
url: https://www.thepexcel.com/functions/excel/date-and-time/datedif/
type: function-explainer
program: Excel
syntax: "=DATEDIF(start_date, end_date, unit)"
date: 2025-12-02
updated: 2025-12-22
scores:
  popularity: 8
  difficulty: 3
  usefulness: 8
---

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

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

## คำอธิบาย

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

## Syntax

```excel
=DATEDIF(start_date, end_date, unit)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| start_date | Yes | Date |  | วันที่เริ่มต้น (ต้องน้อยกว่าหรือเท่ากับ end_date หากมากกว่าจะได้ #NUM! error) |
| end_date | Yes | Date |  | วันที่สิ้นสุด (ต้องมากกว่าหรือเท่ากับ start_date) |
| unit | Yes | Text |  | หน่วยที่ต้องการคำนวณ (ต้องใส่ในเครื่องหมายคำพูด): "Y"=ปี, "M"=เดือน, "D"=วัน, "YM"=เศษเดือน(ไม่นับปี), "MD"=เศษวัน(ไม่นับเดือน), "YD"=เศษวัน(ไม่นับปี) |

## เคสการใช้งาน

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

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

_เหมาะกับ:_ hr-management

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

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

_เหมาะกับ:_ contract-management

## ตัวอย่าง

### 1. คำนวณอายุ (ปีเต็ม)

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

**ผลลัพธ์:** `34 (ตัวอย่าง)`

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

### 2. คำนวณอายุงาน (ปี-เดือน-วัน) ด้วยฟอร์มแตร

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

**ผลลัพธ์:** `2 ปี 4 เดือน 13 วัน`

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

### 3. หาจำนวนวันทั้งหมด

```excel
=DATEDIF(A1, B1, "D")
```

**ผลลัพธ์:** `45`

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

### 4. ตรวจสอบวันหมดอายุของสินค้า

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

**ผลลัพธ์:** `ยังปลอดภัย`

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

### 5. คำนวณ Project Duration ในเดือน

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

**ผลลัพธ์:** `5`

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

## หมายเหตุเพิ่มเติม

- จำรหัสหน่วยง่ายๆ: Y=ปี, M=เดือน, D=วัน, YM=เศษเดือน(ไม่สนปี), YD=เศษวัน(ไม่สนปี), MD=เศษวัน(ไม่สนเดือน)

- ตัวอักษร Y, M, D สามารถใช้ตัวเล็กหรือตัวใหญ่ก็ได้ ("y", "m", "d" เท่ากับ "Y", "M", "D")

- ถ้าต้องการคำนวณอายุละเอียด ให้เข้า =DATEDIF() 3 ครั้งแล้วต่อด้วย & เป็นข้อความ

- เมื่อคำนวณเดือน DATEDIF จะ round down เสมอ ไม่มี decimal ถ้าต้องการทศนิยม ลองใช้ YEARFRAC แทน

- ระวัง! วันต้อนท้ายเดือน (เช่น 31 ม.ค. ถึง 28 ก.พ.) DATEDIF อาจคำนวณแปลกๆ เลยต้องเช็คผลลัพธ์

## คำถามที่พบบ่อย

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

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

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

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

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

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

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

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

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

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

## ฟังก์ชันที่เกี่ยวข้อง

- [DAYS – หาจำนวนวัน (จบ – เริ่ม)](https://www.thepexcel.com/functions/excel/date-and-time/days/)
- [YEARFRAC – คำนวณสัดส่วนของปีระหว่างสองวัน](https://www.thepexcel.com/functions/excel/date-and-time/yearfrac/)
- [NETWORKDAYS – นับวันทำงานระหว่าง 2 วันที่](https://www.thepexcel.com/functions/excel/date-and-time/networkdays/)
- [TODAY – แสดงวันที่ปัจจุบัน (อัปเดตอัตโนมัติ)](https://www.thepexcel.com/functions/excel/date-and-time/today/)
- [DATE – ฟังก์ชันสร้างวันที่จากปี เดือน วัน](https://www.thepexcel.com/functions/excel/date-and-time/date/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Support: DATEDIF Function](https://support.microsoft.com/en-us/office/datedif-function-25dba1a4-2812-480b-84dd-8b32a451b35c) _(official)_
- [Excel-Easy: DATEDIF Examples & Tutorial](https://www.excel-easy.com/examples/datedif.html) _(article)_
- [TechOnTheNet: DATEDIF Function Guide](https://www.techonthenet.com/excel/formulas/datedif.php) _(article)_

---

_Source: [https://www.thepexcel.com/functions/excel/date-and-time/datedif/](https://www.thepexcel.com/functions/excel/date-and-time/datedif/)_
