work time calculation

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

ปัญหาหนึ่งที่มีคนถามมาบ่อยๆ เกี่ยวกับเรื่องของการคำนวณเวลา นั่นก็คือ การคำนวณระยะเวลาทำงาน เมื่อเรารู้เวลาเริ่มงาน เวลาเลิกงาน และมีการกำหนดช่วงเวลาพักไว้ เช่น 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

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


Comments

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

  1. ศักดิ์ชัย เชื้อสวย Avatar
    ศักดิ์ชัย เชื้อสวย

    สวัสดี ครับอาจาร์ย
    ผมมีเรื่องรบกวนครับ
    จะล็อก วันที่ และ เวลา ใน Excel เช่น เวลา 13:15:12 (ผมใช้สูตร =now() ซึ่งผมต้องการล็อกเวลานี้ไว้ ทำอย่างไรครับ

    1. Sira Ekabut Avatar
      Sira Ekabut

      paste value ครับ

      หรือไม่ก็ ใช้ Ctrl+: แทนการใช้สูตรครับ

Leave a Reply

Your email address will not be published. Required fields are marked *