การหาอายุ หาระยะเวลาจากวันนั้นถึงวันนี้ว่าเป็นกี่ปี กี่เดือน กี่วัน เป็นปัญหายอดนิยมที่ถามหากันเสมอว่าจะใช้ Excel หาได้อย่างไร ซึ่งต้องแอบกระซิบบอกกันว่า ให้ใช้สูตร DateDif
สูตร DateDif เป็นสูตรที่ Microsoft แอบสร้างไว้ให้ใช้กัน มีเรื่องเล่ากันมาว่า เดิมทีใน Excel ไม่มีสูตรนี้หรอก แต่ต้องหาทางเอาใจสาวก Lotus 1-2-3 ที่มีสูตรคำนวณหาระยะเวลาให้เปลี่ยนใจมาใช้ Excel ได้ง่ายขึ้น จึงสร้างสูตร DateDif ขึ้นมา โดยใน Excel บางรุ่น ไม่ได้ใส่สูตรนี้ไว้ในรายชื่อ Function มาตรฐานและไม่มีคู่มือบอกวิธีการใช้งานไว้ใน Excel Help เสียด้วย
ที่แปลกกว่านี้ สูตร DateDif อาจคำนวณให้คำตอบไม่ตรงกันกับความเข้าใจของผู้ใช้งาน และใน Excel แต่ละรุ่นอาจให้คำตอบต่างกันได้อีก ดังนั้นก่อนที่จะอธิบายวิธีใช้งานของสูตรนี้ ขอแนะนำว่า อย่าใช้สูตรนี้กับงานสำคัญๆที่เกี่ยวข้องกับความเป็นความตายหรือหน้าตาชื่อเสียง ถ้าจะใช้เล่นๆก็ตามใจ
โครงสร้างสูตร
=DateDif( วันที่เริ่ม, วันสุดท้าย, ตัวเลือก )
ตัวเลือกที่ใช้หาว่ากี่ปี กี่เดือน กี่วัน จะใส่ y ym md ตามลำดับ
d นับจำนวนวันทั้งหมด
m นับจำนวนเดือนทั้งหมด
y นับจำนวนปีทั้งหมด
yd นับจำนวนวันที่เหลือ หลังจากปีชนปีแล้ว
ym นับจำนวนเดือนที่เหลือ หลังจากปีชนปีแล้ว
md นับจำนวนวันที่เหลือ หลังจากเดือนชนเดือนแล้ว
การคำนวณหาระยะเวลากี่เดือน กี่วัน สำคัญตรงหลักการคิดนี่แหละว่า "วิธีที่ Excel คิด" ตรงกับ "วิธีที่คนเราคิด" หรือไม่
ถ้าตั้งปัญหาขึ้นมาถามแค่การนับเดือนตามวิธีการของมนุษย์
จากวันที่ 31/1/2021 ถึงวันที่ 28/2/2021 มีระยะเวลาเท่าไร
ตอบว่า 1 เดือนใช่ไหม ที่นับว่า 1 เดือนนั้น เพราะเดือนกุมภาพันธ์เต็มเดือน และเป็นวันสิ้นเดือนชนกัน
จากวันที่ 28/1/2021 ถึงวันที่ 28/2/2021 มีระยะเวลาเท่าไร
จะตอบว่า 1 เดือนอีกหรือเปล่า เพราะวันที่ 28 ชนกันพอดี
จะเห็นว่าวิธีคิดของเรานี่แหละยังมีตั้งหลายอย่าง แล้ว Excel ล่ะมีวิธีคิดยังไง (ภาพนี้มาจาก Excel 365 นะครับ ถ้าเป็นรุ่นอื่นอาจได้คำตอบต่างไปก็ได้)
- จากวันที่ 31/1/2021 ถึงวันที่ 28/2/2021 มีระยะเวลา 0 ปี 0 เดือน 28 วัน
เพราะวันที่ 28/2 น้อยกว่า 31/2 จึงนับ 28 วัน (Excel ไม่สนใจว่าเดือน 2 มีแค่ 28 วัน) - จากวันที่ 28/1/2021 ถึงวันที่ 28/2/2021 มีระยะเวลา 0 ปี 1 เดือน 0 วัน
เพราะวันที่ 28/2 ตรงกันกับวันที่ 28/1 - จากวันที่ 31/1/2021 ถึงวันที่ 4/3/2021 มีระยะเวลา 0 ปี 1 เดือน 1 วัน
เพราะจากวันที่ 31/1 Excel จะนับเดือนชนเดือนก่อนไปหาวันที่ 31/2
ซึ่งจะตรงกับวันที่ 3/3 (28-1-2-3 = 28-29-30-31) - จากวันที่ 31/1/2021 ถึงวันที่ 3/3/2021 มีระยะเวลา 0 ปี 1 เดือน 0 วัน
เพราะจากวันที่ 31/1 Excel จะนับเดือนชนเดือนก่อนไปหาวันที่ 31/2
ซึ่งจะตรงกับวันที่ 3/3 (28-1-2-3 = 28-29-30-31) ครบ 1 เดือนพอดี - จากวันที่ 31/1/2021 ถึงวันที่ 2/32021 มีระยะเวลา 0 ปี 1 เดือน -1 วัน
เพราะจากวันที่ 31/1 Excel จะนับเดือนชนเดือนก่อนไปหาวันที่ 31/2
ซึ่งจะตรงกับวันที่ 3/3 (28-1-2-3 = 28-29-30-31) เกิน 1 เดือนไป 1 วันจึงต้องลบ 1 วันย้อนกลับมาให้ตรง - จากวันที่ 31/1/2021 ถึงวันที่ 1/3/2021 มีระยะเวลา 0 ปี 1 เดือน -2 วัน
เพราะจากวันที่ 31/1 Excel จะนับเดือนชนเดือนก่อนไปหาวันที่ 31/2
ซึ่งจะตรงกับวันที่ 3/3 (28-1-2-3 = 28-29-30-31) เกิน 1 เดือนไป 2 วันจึงต้องลบ 2 วันย้อนกลับมาให้ตรง
ด้วยสาเหตุที่สูตร DateDif สามารถหาจำนวนวันเป็นค่าติดลบได้ด้วย Microsoft จึงแนะนำว่า ไม่ควรใช้สูตรนี้กับตัวเลือก md
แล้วจะใช้สูตรอะไรเพื่อคำนวณหาอายุหรือระยะเวลาดีล่ะ ก่อนที่จะคิดไปหาสูตร ควรคิดถึงหลักการคำนวณระยะเวลาที่คุณจะใช้ก่อนว่าจะนับกันอย่างไร ซึ่งเท่าที่ผมใช้ Excel มา พบว่ามีสูตร DateDiff ที่สร้างด้วย VBA Add-in ของ John Walkenbach สามารถใช้คำนวณหาระยะเวลาได้ใกล้เคียงกับที่คนเราคิดมากที่สุด
แนะนำให้ดูวิธีการใช้สูตรของ John Walkenbach ได้ในหลักสูตรเรียนออนไลน์ ฟรี "สารพัด Free สารพัด File แจกฟรี"
https://www.excelexperttraining.com/online/courses/03-free-free-free/lessons/datediff/
เนื่องจากสูตรนี้มีผู้ให้คำแนะนำเยอะแยะไปหมด ถูกบ้างผิดบ้าง เว่อบ้าง จึงขอแนะนำให้ไปศึกษาเพิ่มเติมจากไมโครซอฟท์โดยตรงจะชัดเจนและมั่นใจในความถูกต้องมากที่สุด
DATEDIF function
https://support.microsoft.com/en-us/office/datedif-function-25dba1a4-2812-480b-84dd-8b32a451b35c?WT.mc_id=M365-MVP-4000499
Calculate the difference between two dates
https://support.microsoft.com/en-us/office/calculate-the-difference-between-two-dates-8235e7c9-b430-44ca-9425-46100a162f38?WT.mc_id=M365-MVP-4000499