วันอังคารที่ 12 กรกฎาคม พ.ศ. 2554

vba excel : สร้างสูตร excel แปลงหน่วยเวลา

vba excel วันนี้จะขอนำเสนอการสร้างสูตร excel แปลงหน่วยเวลา เพื่อใช้งาน excel ปัญหาการคำนวณเวลาใน excel ยังมีความยุ่งยากในการใช้งานโดยเฉพาะรูปแบบของเวลาในการใช้ excel ผมได้เคยนำเสนอการใช้ excel เกี่ยวกับการแก้ปัญหาข้อมูลด้านเวลามาพอสมควรในบทความที่ผ่านๆมา เรามาดูปัญหาที่ต้องแก้กันในหัวข้อนี้ครับ ปกติผู้ใช้งาน excel มักจะคุ้นเคยกับการบันทึกค่าเวลาในรูปแบบ h.mm เช่น 7.45 จะหมายถึง 7 ชั่วโมง 45 นาที รูปแบบของเวลาดังกล่าวไม่ได้เป็นตัวเลขฐานสิบที่เราคุ้นเคยกัน นั่นคือ 0.45 + 0.20 มิได้หมายถึง 0.65 แต่จะหมายถึง 1.05 ดังนั้นบทความนี้เราจะมาสร้าง สูตร excel เพื่อแปลงหน่วยเวลาให้ตรงกันเพื่อให้สามารถดำเนินการบวก ลบ คูณ หาร ได้ครับ เริ่มจากเราจะสร้างสูตรแปลงเวลารูปแบบที่ผู้ใช้ excel คุ้นเคยไปยังรูปแบบที่สามารถดำเนินการได้เราจะตั้งชื่อสูตร excel นี้ว่า TimeToMin โดยจะรับค่าเวลาในรูปแบบปกติเข้ามาดำเนินการและคืนค่าเวลาในหน่วยนาทีกลับไป

แนวคิด

ค่าเวลาที่รับมาจะถูกคูณด้วย 100 เพื่อแปลงเป็นจำนวนเต็ม และหารเอาเศษด้วย100 ด้วยฟังก์ชั่น mod ใน vba เศษที่ได้จะเป็นเวลาในหลักนาที ดังตัวอย่าง

หากค่าเวลาที่รับมาเป็น 7.45 ดังนั้น 7.45*100 = 745 เมื่อนำ 745 ไปหารเอาเศษด้วย 100 จะได้เท่ากับ 45 นั่นเอง

คำนวณจำนวนชั่วโมงได้ดังนี้

hr = (7.45*100 –45)/100 = 700/100 = 7

คำนวณเวลาในหน่วยนาทีได้ดังนี้

time = 7*60+45 = 465 นาที

เขียนเป็นฟังก์ชันใน vba ได้ดังนี้ครับ

Function TimeToMin(time As Double) As Integer
Dim min As Integer
Dim hr As Integer
min = (time * 100) Mod 100
hr = (time * 100 - min) / 100
TimeToMin = hr * 60 + min
End Function

การแปลงค่าเวลาจากหน่วยนาทีมาอยู่ในรูปแบบ h.mm สามารถเขียนฟังก์ชันใน vba ได้ดังนี้ครับ

Function MinToTime(time_m As Integer) As Double
Dim min As Integer
Dim hr As Integer
min = time_m Mod 60
hr = (time_m - min) / 60
MinToTime = (hr * 100 + min) / 100
End Function

การเรียกใช้สูตร excel ที่พัฒนาจาก vba ดูได้จากบทความพื้นฐาน vba excel ครับ หวังว่าท่านผู้อ่านจะนำไปประยุกต์ใช้กับการใช้ excel ที่เกี่ยวข้องกับเวลาได้นะครับ เพราะบางครั้งสูตร excel ที่สำเร็จรูปก็ไม่สามารถใช้งานได้อย่างง่ายและสะดวกครับ แล้วพบกับบทความการใช้ excel อื่นๆต่อไปนะครับสวัสดีครับ

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

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

Yahoo bot last visit powered by  Ybotvisit.com