การคำนวณหาระยะเวลาในช่วงวันที่ต้องการว่าเป็นกี่ปี กี่เดือน กี่วัน เป็นสิ่งที่หลายคนต้องการ โดยเฉพาะสำหรับเจ้าหน้าที่ฝ่ายบุคคลหรือฝ่ายบัญชี โดยหาทราบไม่ว่า สูตร DateDif เป็นสูตรต้องห้าม ห้ามนำมาใช้ในงานที่ต้องการหาคำตอบที่ถูกต้องจริงๆ เพราะคำตอบที่คำนวณได้ในบางช่วงระยะเวลาจะผิดเพี้ยนจากที่คิดไว้ บางช่วงจะหาระยะเวลาเป็นค่าติดลบได้ด้วยซ้ำ

Excel ได้แอบสร้างสูตร DateDif เอาไว้ให้พวกเราได้ใช้เล่นๆกัน (ย้ำ คำว่าเล่นๆ) เพื่อต้องการช่วยทำให้ผู้ที่เคยใช้โปรแกรม Lotus 1-2-3 สามารถมีสูตรที่ใช้คำนวณหาระยะเวลาโดยใช้ Excel ได้เหมือนกัน สาวก 1-2-3 จะได้เปลี่ยนใจหันมาใช้ Excel ได้ง่ายขึ้น

สาเหตุที่ต้องแอบบอกต่อๆกันมาว่าใน Excel มีสูตร DateDif ให้ใช้ก็เพราะสูตรนี้ไม่ได้คำนวณให้คำตอบดังใจนักหรอก Excel บางรุ่นมีคำอธิบายวิธีใช้สูตรนี้แสดงไว้ใน Help บางรุ่นไม่มีใน Help บางรุ่นให้คำตอบต่างจาก Excel รุ่นอื่นๆเสียอีก (พอเอาแฟ้มที่มีสูตรนี้ไปเปิดใน Excel ต่างรุ่นกัน กลับให้คำตอบต่างกัน) แม้แต่ Excel 2016 ก็ยังเพี้ยน

สูตรนี้ผมยกมาเป็นตัวอย่างในการอบรม เพื่อบอกว่า ห้ามใช้ และเป็นบทเรียนว่า อย่าเชื่อ Excel ให้มากนัก จนกว่าจะพิสูจน์ด้วยตัวเอง ใครที่ใช้สูตรนี้ หน้าแตกมาหลายรายแล้ว

มาลองคิดกันในใจง่ายๆว่า จากวันที่ 31/1/2016 ถึงวันที่ 29/2/2016 นับระยะเวลาได้กี่ปี กี่เดือน กี่วัน ซึ่งหลักการนับวันแบบสากลที่ยึดถือกัน ถ้านับจากวันที่เริ่มต้นก็ต้องนับถึงวันก่อนวันที่สุดท้าย จำง่ายๆว่า นับต้นแต่ไม่นับปลาย (ถ้าจะนับปลาย ก็ต้องไม่นับต้น)

DateDifTest

เนื่องจากในปี 2016 เดือนกุมภาพันธ์มี 29 วัน ดังนั้นวันที่ 29 จึงเป็นวันสิ้นเดือนกุมภาพันธ์ ถ้ายึดถือหลักว่าเป็นวันสิ้นเดือนตรงกับวันที่ 31 มกราคม นับจากวันสิ้นเดือนชนวันสิ้นเดือนถัดไปก็ต้องให้คำตอบว่าระยะเวลาเท่ากับ 1 เดือนพอดีใช่ไหม หรือให้คำตอบ 0 ปี 1 เดือน 0 วัน

แต่ถ้าไม่ได้ใช้หลักดูวันสิ้นเดือนล่ะ ให้ดูแค่วันที่ ก็ต้องตอบว่า 0 ปี 0 เดือน 29 วัน

พอถึงขั้นนี้จะเห็นได้ว่าแค่หลักคิดของคนก็ยังไม่ได้มีแค่หลักเดียว ซึ่งคนสร้างสูตรนี้เขาใช้หลักอะไรกัน จะนับเดือนจากวันสิ้นเดือน หรือจะนับวันโดยไม่ดูวันที่สิ้นเดือนดี นี่แหละคือสาเหตุที่สูตร DateDif อาจให้คำตอบไม่ตรงกับที่คุณอยากจะให้มันคิด

มาลองคิดกันต่อไปว่า จากวันที่ 31/1/2016 ถึงวันที่ 31/3/2016 นับระยะเวลาได้กี่ปี กี่เดือน กี่วัน ถ้านับตามหลักวันสิ้นเดือนชนกันต้องตอบว่า 0 ปี 2 เดือน 0 วัน คือ นับเดือนกุมภาพันธ์ กับ มีนาคม เต็มเดือนรวมเป็น 2 เดือน แต่ถ้าใช้หลักดูจากวันต้องตอบว่า 0 ปี 1 เดือน 31 วัน คือ นับเดือนกุมภาพันธ์เต็มเดือน กับ มีนาคมอีก 31 วัน

ถ้านับจากวันที่ 31/1/2016 ถึงแค่วันที่ 30/3/2016 ควรจะตอบว่า 0 ปี 1 เดือน 30 วัน คือ นับเดือนกุมภาพันธ์เต็มเดือน กับ มีนาคมอีก 30 วันใช่หรือไม่ ลองดูจากภาพเองว่า Excel ให้คำตอบอย่างไร

คราวนี้มานับใกล้เข้ามาหน่อย ถ้านับจากวันที่ 31/1/2016 ถึงแค่วันที่ 2/3/2016 ควรจะตอบว่า 0 ปี 1 เดือน 2 วัน คือ นับเดือนกุมภาพันธ์เต็มเดือน กับ มีนาคมอีก 2 วันใช่หรือไม่ แต่สูตร DateDif กลับให้คำตอบเท่ากับ 0 ปี 1 เดือน 0 วัน

สูตร DateDif ไม่ได้ใช้หลักตามที่คนคิดกัน แต่สูตรนี้พยายามหาเดือนชนเดือนก่อนแล้วจึงหาเศษว่าเหลืออีกกี่วัน จากวันที่ 31/1/2016 ก็จะพยายามหาวันที่ 31/2/2016 เพื่อชนเดือนถัดไปในวันที่ 31 เดียวกันให้ได้ก่อน แต่เนื่องจากเดือนกุมภาพันธ์ 2016 มี 29 วัน พอนับต่อไปอีก 2 วันให้ชนถึงวันที่ 31 กุมภาพันธ์ (ซึ่งไม่มี) ก็จะตรงกับวันที่ 2/3/2016 พอดี จึงหาคำตอบเป็น 0 ปี 1 เดือน 0 วัน

พอนับจากวันที่ 31/1/2016 ถึงแค่วันที่ 1/3/2016 จึงหาคำตอบเป็น 0 ปี 1 เดือน -1 วัน กลับหาค่าติดลบมาให้

นี่คือสาเหตุที่ไม่ควรใช้สูตร DateDif คำนวณหาระยะเวลาในงานที่ต้องการคำตอบถูกต้องอย่างแม่นยำและต้องให้คำตอบแบบเดียวกันตลอดไป แต่ถ้าจะแนะนำกันให้รู้จักกันเล่นๆก็ไม่ว่ากัน อย่างน้อยจะได้เตือนกันไว้บ้างว่า อะไรควรหรือไม่ควร

หลักการใช้สูตร DateDif ที่น่าจะเป็น

ถ้าจะใช้สูตร DateDif ต้องไม่ใช้วันที่เริ่มต้นที่เป็นวันที่ 30 หรือ 31 โดยให้ใช้วันที่เริ่มต้นได้ตั้งแต่วันที่ 1 - 29 แต่พอเป็นวันที่ 30 หรือ 31 ต้องปรับวันที่ให้เป็นวันที่ 29 ในเดือนเดิมหรือวันที่ 1 ต้นเดือนถัดไปแทน จากนั้นก่อนจะนำคำตอบที่คำนวณได้ไปใช้ ต้องปรับคำตอบที่คำนวณได้ให้เพิ่มจำนวนวันมากขึ้นหรือลดลง 1 - 2 วันแล้วแต่การเลื่อนวันที่ลดลงไปเป็นวันที่ 29 หรือเลื่อนไปเป็นวันที่ 1 เดือนถัดไป ส่วนวันที่สุดท้ายจะเป็นวันที่ใดก็ได้

หากใครเจอปัญหาว่าหลักการนี้ใช้ไม่ได้ กรุณาแจ้งให้ทราบด้วยจะได้หาทางแก้ไขแบบอื่น

Download แฟ้มตัวอย่างได้จาก www.ExcelExpertTraining.com/download/DateDifTest.xlsb

 

 

 

Author: สมเกียรติ ฟุ้งเกียรติEmail: This email address is being protected from spambots. You need JavaScript enabled to view it.

E-Learning

Go to top