วันศุกร์ที่ 27 สิงหาคม พ.ศ. 2553

VBA Excel ตอน เขียน vba แก้ปัญหาสูตร Datedif (1)

สูตร Datedif ใน Excel ที่ผมได้นำเสนอไปในบทความที่ผ่านมา และทิ้งท้ายให้ผู้อ่านโปรดระมัดระวังการใช้งานสูตร Datedif จากการที่ไปค้นข้อมูลจากแหล่งต่างๆก็พบคำเตือนในการใช้งานสูตรนี้ โดยใน Excel2003 และ Excel2007 ได้ถูกตัดออกไปจาก Help ของ MS Excel ไปแล้ว ซึ่งผมคิดว่าคงมีปัญหาอะไรบางอย่างที่เรายังไม่รู้แน่ๆ ดังนั้นบทความนี้จึงขอนำเสนอวิธีคิดคำนวณหาระยะห่างระหว่างวันโดยใช้ VBA ในการสร้างฟังก์ชันการคำนวณดังกล่าว โดยใช้ฟังก์ชัน Date ที่มีอยู่ในสูตรของ Excel เรามาช่วยกันคิดครับ

1 สูตรคำนวณระยะห่างระหว่างวันจะนำวันสุดท้ายมานับด้วย เช่น ระยะห่างระหว่างวันที่ 27 สิงหาคม 2010 ถึง 30 สิงหาคม 2010 จะเท่ากับ 4 วันเป็นต้น

2 แนวคิดการคำนวณเริ่มจาก จะพิจารณาปี คศ ของวันทั้งสอง (ใช้สูตร YEAR(date) ของ Excel โดยผลต่างของจำนวนปีทั้งสองจะต้องถูกนำมาตรวจสอบก่อนดังนี้

2.1 หากวันที่และเดือนของวันเริ่มต้นเกิดหลังวันที่และเดือนของวันสุดท้ายแสดงว่ายังไม่ครบรอบปี ดังนั้นผลต่างของปีที่คำนวณได้ก็ต้องถูกลบออกไป 1 ปี แต่หากเกิดก่อนวันที่และเดือนของวันสุดท้ายก็แสดงว่าเลยขวบปีมาแล้วจำนวนปีก็จะเท่ากับผลต่างที่ได้จากการคำนวณ

ตัวอย่างเช่น ผลต่างจำนวนปีของ 27/08/2008 ถึง 29/08/2010 ผลต่างที่ได้ คือ 2010 – 2008 = 2 แต่เมื่อพิจารณาตามเงื่อนไขข้อ 2.1 พบว่า 27/08 เกิดก่อน 29/08 ดังนั้นผลต่างของปีจะเท่ากับ 2 ปี ถูกมั้ยครับ

หากให้ เซลล์ B2 เป็นวันเริ่มต้น B3 เป็น วันสุดท้าย สามารถเขียนเป็นสูตร Excel ได้ภาพที่ 1 ครับ

Diff Year

ภาพที่ 1 Diff year

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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Yahoo bot last visit powered by  Ybotvisit.com