work time calculation

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก

ปัญหาหนึ่งที่มีคนถามมาบ่อยๆ เกี่ยวกับเรื่องของการคำนวณเวลา นั่นก็คือ การคำนวณระยะเวลาทำงาน เมื่อเรารู้เวลาเริ่มงาน เวลาเลิกงาน และมีการกำหนดช่วงเวลาพักไว้ เช่น Break อาจมีหลายช่วงด้วย เช่น พัก1 ตอน 12:00-13:00 และ พัก2 ตอน 17:00-18:00 เป็นต้น

ในบทความนี้ผมจะขอเขียนอธิบายแนวทางในการคิด ซึ่งหากเข้าใจแล้วจะมีช่วงพักกี่ช่วงเราก็ไม่กลัวครับ

ในบทความนี้ผมเตรียมข้อมูลอยู่ในรูปแบบ Table เพื่อให้เห็นชื่อ Field ชัดๆ ตอนเขียนสูตรดังนี้ (โหลดไฟล์ได้ที่นี่)

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 1

แนวคิด

เนื่องจากมีการพักสองช่วงเวลา ดังนั้นผมจะขอแบ่งการทำงานออกเป็น 3 Part ดังนี้ เพื่อคำนวณเวลาการทำงานในแต่ละ Part จากนั้นค่อยเอามารวมกันอีกที

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 2

การคำนวณระยะเวลาใน Part 1

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 3

เวลาจบ : MIN([@เริ่มพัก1],[@เลิกงาน])

เวลาเริ่ม : MAX([@เริ่มงาน],0)

ที่เทียบกับเลข 0 เพราะว่าเวลา 0:00 คือการเริ่มต้นวัน ซึ่งมีค่าที่แท้จริงคือเลข 0 นั่นเอง

Part 1 ทำให้ไม่ติดลบด้วย Max กับ 0 :
=MAX(MIN([@เริ่มพัก1],[@เลิกงาน])-MAX([@เริ่มงาน],0),0)

การคำนวณระยะเวลาใน Part 2

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 4

เวลาจบ : MIN([@เริ่มพัก2],[@เลิกงาน])

เวลาเริ่ม : MAX([@เริ่มงาน],[@จบพัก1])

Part 2 ทำให้ไม่ติดลบด้วย Max กับ 0 :
=MAX(MIN([@เริ่มพัก2],[@เลิกงาน])-MAX([@เริ่มงาน],[@จบพัก1]),0)

การคำนวณระยะเวลาใน Part 3

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 5

เวลาจบ : 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]

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 6

ถ้ามีพักแค่ทีเดียว เราอาจทำให้ เวลาพัก 1 กับ 2 เหมือนกันไปก็ได้นะครับ เช่น

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 7

หรือถ้ามีพัก 3 อีกเราก็ใช้หลักการนี้ในการวิเคราะห์ได้ครับ ว่า Part4 ควรจะเริ่มต้นที่ไหน ยังไงลองดูนะครับ ถ้าติดก็ Comment ได้เลย

คำนวณค่าแรง

สมมติว่าการทำงานแต่ละชั่วโมง มีค่าจ้างด้วย ชั่วโมงละ 100 บาท เราจะคิดค่าจ้างอย่างไร?

หากคิดว่าเราจะเอามาคูณกันตรงๆแบบนี้ ผลลัพธ์จะผิด เพราะว่าจริงๆ มันคนละหน่วยกัน
เช่น =[@รวมเวลาทำงานในวัน]*[@ค่าจ้างต่อชม]

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 8

หากเราปรับ format ของช่องรวมเวลาเป็น general ให้เห็นค่าที่แท้จริงจะชัดเจนขึ้น

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 9

ค่าที่ออกมาจริงๆ แล้วหน่วยเป็นวัน ไม่ใช่ชั่วโมง (10:10 คือ 0.42 วัน) ดังนั้นการคำนวณเราต้องแปลงหน่วยเป็นชั่วโมงโดยการคูณ 24 ด้วย จึงจะถูกต้อง

สรุป สูตร คือ : =[@รวมเวลาทำงานในวัน][@ค่าจ้างต่อชม]*24

วิธีคำนวณระยะเวลาทำงาน แบบมีช่วงเวลาหยุดพัก 10

ดังนั้น จำไว้เลยว่า เมื่อไหร่ที่มีการคำนวณเรื่องวันที่/เวลา… อย่าลืมคิดถึงเรื่องของค่าที่แท้จริงของมันนะครับ จะได้ไม่พลาด ^^