ปัญหาหนึ่งที่มีคนถามมาบ่อยๆ เกี่ยวกับเรื่องของการคำนวณเวลา นั่นก็คือ การคำนวณระยะเวลาทำงาน เมื่อเรารู้เวลาเริ่มงาน เวลาเลิกงาน และมีการกำหนดช่วงเวลาพักไว้ เช่น Break อาจมีหลายช่วงด้วย เช่น พัก1 ตอน 12:00-13:00 และ พัก2 ตอน 17:00-18:00 เป็นต้น
ในบทความนี้ผมจะขอเขียนอธิบายแนวทางในการคิด ซึ่งหากเข้าใจแล้วจะมีช่วงพักกี่ช่วงเราก็ไม่กลัวครับ
ในบทความนี้ผมเตรียมข้อมูลอยู่ในรูปแบบ Table เพื่อให้เห็นชื่อ Field ชัดๆ ตอนเขียนสูตรดังนี้ (โหลดไฟล์ได้ที่นี่)
สารบัญ
แนวคิด
เนื่องจากมีการพักสองช่วงเวลา ดังนั้นผมจะขอแบ่งการทำงานออกเป็น 3 Part ดังนี้ เพื่อคำนวณเวลาการทำงานในแต่ละ Part จากนั้นค่อยเอามารวมกันอีกที
การคำนวณระยะเวลาใน Part 1
เวลาจบ : MIN([@เริ่มพัก1],[@เลิกงาน])
เวลาเริ่ม : MAX([@เริ่มงาน],0)
ที่เทียบกับเลข 0 เพราะว่าเวลา 0:00 คือการเริ่มต้นวัน ซึ่งมีค่าที่แท้จริงคือเลข 0 นั่นเอง
Part 1 ทำให้ไม่ติดลบด้วย Max กับ 0 :
=MAX(MIN([@เริ่มพัก1],[@เลิกงาน])-MAX([@เริ่มงาน],0),0)
การคำนวณระยะเวลาใน Part 2
เวลาจบ : MIN([@เริ่มพัก2],[@เลิกงาน])
เวลาเริ่ม : MAX([@เริ่มงาน],[@จบพัก1])
Part 2 ทำให้ไม่ติดลบด้วย Max กับ 0 :
=MAX(MIN([@เริ่มพัก2],[@เลิกงาน])-MAX([@เริ่มงาน],[@จบพัก1]),0)
การคำนวณระยะเวลาใน Part 3
เวลาจบ : MIN(1,[@เลิกงาน])
ที่เทียบกับเลข 1 เพราะว่าเวลา 24:00 ก็คือจบวันพอดี ซึ่ง 1 วันใน Excel มีค่าคือ 1 ครับ
เวลาเริ่ม : MAX([@เริ่มงาน],[@จบพัก2])
Part 3 ทำให้ไม่ติดลบด้วย Max กับ 0 :
=MAX(MIN(1,[@เลิกงาน])-MAX([@เริ่มงาน],[@จบพัก2]),0)
รวมระยะเวลา
รวมระยะเวลา =[@part1]+[@part2]+[@part3]
สรุปสูตรทั้งหมด
part1 =MAX(MIN([@เริ่มพัก1],[@เลิกงาน])-MAX([@เริ่มงาน],0),0)
part2 =MAX(MIN([@เริ่มพัก2],[@เลิกงาน])-MAX([@เริ่มงาน],[@จบพัก1]),0)
part3 =MAX(MIN(1,[@เลิกงาน])-MAX([@เริ่มงาน],[@จบพัก2]),0)
รวม =[@part1]+[@part2]+[@part3]
ถ้ามีพักแค่ทีเดียว เราอาจทำให้ เวลาพัก 1 กับ 2 เหมือนกันไปก็ได้นะครับ เช่น
หรือถ้ามีพัก 3 อีกเราก็ใช้หลักการนี้ในการวิเคราะห์ได้ครับ ว่า Part4 ควรจะเริ่มต้นที่ไหน ยังไงลองดูนะครับ ถ้าติดก็ Comment ได้เลย
คำนวณค่าแรง
สมมติว่าการทำงานแต่ละชั่วโมง มีค่าจ้างด้วย ชั่วโมงละ 100 บาท เราจะคิดค่าจ้างอย่างไร?
หากคิดว่าเราจะเอามาคูณกันตรงๆแบบนี้ ผลลัพธ์จะผิด เพราะว่าจริงๆ มันคนละหน่วยกัน
เช่น =[@รวมเวลาทำงานในวัน]*[@ค่าจ้างต่อชม]
หากเราปรับ format ของช่องรวมเวลาเป็น general ให้เห็นค่าที่แท้จริงจะชัดเจนขึ้น
ค่าที่ออกมาจริงๆ แล้วหน่วยเป็นวัน ไม่ใช่ชั่วโมง (10:10 คือ 0.42 วัน) ดังนั้นการคำนวณเราต้องแปลงหน่วยเป็นชั่วโมงโดยการคูณ 24 ด้วย จึงจะถูกต้อง
สรุป สูตร คือ : =[@รวมเวลาทำงานในวัน][@ค่าจ้างต่อชม]*24
ดังนั้น จำไว้เลยว่า เมื่อไหร่ที่มีการคำนวณเรื่องวันที่/เวลา… อย่าลืมคิดถึงเรื่องของค่าที่แท้จริงของมันนะครับ จะได้ไม่พลาด ^^