TLDR สรุปสั้นๆ
DATEDIF คำนวณระยะห่างระหว่างวันที่สองวันในแบบต่างๆ ที่ต้องการ
คำอธิบาย
ฟังก์ชัน DATEDIF ช่วยในการคำนวณระยะห่างระหว่างวันที่สองวันในแบบต่างๆ เช่น ปี เดือน หรือวัน มันเน้นความง่ายและรวดเร็วในการหาช่วงเวลา ทำให้เหมาะสำหรับการคำนวณอายุ ระยะเวลาโครงการ หรือสิ่งใดๆ ที่กล่าวถึงเรื่องเวลา
แต่ๆๆๆ ฟังก์ชันนี้มันมีพฤติกรรมแปลกๆ หลายอย่างเลย จนถ้าไม่ระวังให้ดีอาจได้คำตอบที่อาจจะผิดหรือแม้แต่ติดลบได้นะ โดยเฉพาะถ้าเริ่มวันช่วงสิ้นเดือน ใครสนใจวิธีแก้ อ่านได้ที่นี่
มีครั้งแรกในเวอร์ชันไหน
2003 หรือ Version ก่อนหน้า
รูปแบบคำสั่ง (Syntax)
DATEDIF(start_date, end_date, unit)
Arguments
-
start_date (Required – Date)
วันที่เริ่มต้นของช่วงที่ต้องการนับ สามารถเป็นข้อความที่เป็นตัวเลขตรง ๆ หรือใช้ฟังก์ชัน เช่น DATEVALUE เพื่อแปลงวันที่จากข้อความ -
end_date (Required – Date)
วันที่สิ้นสุดของช่วงที่ต้องการนับ - unit (Required – Text)
- y : จำนวน ปีเต็ม ระหว่าง start_date และ end_date
- m : จำนวน เดือนเต็ม ระหว่าง start_date และ end_date
- d : จำนวน วันทั้งหมด ระหว่าง start_date และ end_date
- md : จำนวน วันที่เหลือ หลังจากนับเดือนเต็มจาก start_date ถึง end_date (เหมือนคิด m แล้วค่อย d)
- ym : จำนวน เดือนที่เหลือ หลังจากนับปีเต็มจาก start_date ถึง end_date (เหมือนคิด y แล้วค่อย m)
- yd : จำนวน วันที่เหลือ หลังจากนับปีเต็ม จาก start_date ถึง end_date (เหมือนคิด y แล้วค่อย d)
ตัวอย่างการใช้งาน (Examples)
ผมจะใส่ตัวอย่างให้เห็นวันเริ่ม/วันจบหลายๆ แบบ จะได้เข้าใจว่าได้ผลลัพธ์ยังไง ซึ่งหลักการของมันคือ มันพยายามมองว่าการจบเดือน ต้องพยายามจบเดือนในเลขวันเดียวกับวันเริ่มต้น เช่น
- ถ้าผมเริ่มวันที่ 6 การครบเดือนต้องลงในวันที่ 6 เหมือนกัน

- Formula: เริ่ม 6 มกรา 2025 -> จบ 7 ธันวา 2026
Description: คำนวณจำนวนปีแบบเต็มปี ระหว่างวันที่ในเซลล์ A5 และ B5=DATEDIF(A5, B5, "y")
Result: 1 (เพราะจะเต็ม 2 ปีจริงๆ ในวันที่ 6/1/2027) - Formula: เริ่ม 6 มกรา 2025 -> จบ 7 ธันวา 2026
Description: คำนวณจำนวนเดือนแบบเต็มเดือน ระหว่างวันที่ในเซลล์ A5 และ B5=DATEDIF(A5, B5, "m")
Result: 23 (เพราะจะเต็ม 24 เดือนจริงๆ ในวันที่ 6/1/2027) - Formula: เริ่ม 6 มกรา 2025 -> จบ 7 ธันวา 2026
Description: คำนวณจำนวนวันระหว่างวันที่ในเซลล์ A5 และ B5 (เหมือนจับลบกันปกติ)=DATEDIF(A5, B5, "d")
Result: 700 - Formula: เริ่ม 6 มกรา 2025 -> จบ 7 ธันวา 2026
Description: จำนวน วันที่เหลือ หลังจากนับเดือนเต็ม จากวันที่ในเซลล์ A5 และ B5=DATEDIF(A5, B5, "md")
Result: 1 ( เพราะมันครบเดือนเต็ม ที่วันที่ 6 ธ.ค. 2026 นี่มันเกินมาอีก 1 วัน) - Formula: เริ่ม 6 มกรา 2025 -> จบ 7 ธันวา 2026
Description: จำนวน เดือนที่เหลือ หลังจากนับปีเต็ม จากวันที่ในเซลล์ A5 และ B5=DATEDIF(A5, B5, "ym")
Result: 11 (เพราะมันครบปีเต็ม ที่วันที่ 6 ม.ค. 2026 แล้วก็นับว่าห่างกี่เดือน ซึ่งครบ 11 เดือนเต็มไปที่ 6 ธ.ค. 2026) - Formula: เริ่ม 6 มกรา 2025 -> จบ 7 ธันวา 2026
Description: จำนวน วันที่เหลือ หลังจากนับปีเต็ม จากวันที่ในเซลล์ A5 และ B5 โดยเหมือนว่าให้อยู่ปีเดียวกัน=DATEDIF(A5, B5, "yd")
Result: 335 (เพราะมันครบปีเต็ม ที่วันที่ 6 ม.ค. 2026 แล้วก็นับว่าห่างอีกกี่วัน)
อาการแปลกๆ ของ DATEDIF
ซึ่งเอาจริงๆ แล้วอาการแปลกๆ ของ DATEDIF จะเกิดขึ้นถ้าเราเริ่มต้นในช่วงปลายเดือนครับ เพราะมัน ต้องพยายามจบเดือนในเลขวันเดียวกับวันเริ่มต้น
ถ้าเริ่มวันที่ 31 แล้วจบมันมี 31 ให้จบ ก็ ok ไม่มีอะไร

แต่บางทีมันก็เป็นไปไม่ได้ไงครับ! เช่น
ถ้าไปเริ่มวันที่ 31 (ลงท้าย *คม) แล้วเดือนปลายทางมีแค่ 30 (*ยน) มันก็จะต้องเลื่อนไปจบวันที่ 1 เป็นต้น

ถ้าไปเริ่มวันที่ 31 (ลงท้าย *คม) แล้วเดือนปลายทางมีแค่ 28-29 (กพ.) มันก็จะต้องเลื่อนไปจบวันที่ 2-3 เป็นต้น (แล้วตั้งแต่วันที่ 1 ก็จะติดลบ)

ใครสนใจวิธีแก้วันติดลบ อ่านได้ที่นี่
Tips & Tricks
สิ่งสำคัญที่สุดในการแก้ปัญหาเรื่องระยะห่างระหว่าง 2 วันในหน่วยที่ไม่ใช่แค่ “วัน” ที่เกิดจากการลบกันปกติ อย่างเช่น การหาอายุงาน ว่ากี่ปี กี่เดือน กี่วัน
ข้อควรระวัง (Cautions)
โปรดจำไว้ว่า DATEDIF ไม่ได้แสดงใน Excel’s Function Wizard และไม่มีเอกสารช่วยเหลือ และมันมีพฤติกรรมแปลกๆ หลายอย่างเลย จนถ้าไม่ระวังให้ดีอาจได้คำตอบที่อาจจะผิดหรือแม้แต่ติดลบได้นะ โดยเฉพาะถ้าเริ่มวันช่วงสิ้นเดือน ใครสนใจวิธีแก้ อ่านได้ที่นี่
ฟังก์ชันที่เกี่ยวข้อง
References
ขอบคุณที่เข้ามาอ่านนะครับ ❤️
Leave a Reply