
อันนี้ลองดูนะว่าพอจะตรงกับความต้องการหรือไม่
แปลงเวลา 19:20
E4=19:20 ซึ่งอยูในรูปแบบ h:mm
M4=IF(F4="",HOUR((E4)),HOUR((D5))) จะได้ค่า 19 (ต้องกำหนดรูปแบบเซลเป็นทั่วไป หรือตัวเลขนะ)
N4=IF(F4="",MINUTE((E4)),MINUTE((D5))) จะได้ค่า 20 (ต้องกำหนดรูปแบบเซลเป็นทั่วไป หรือตัวเลขนะ)
O4=IF(E4="","",(M4&"."&N4)*1) จะได้ค่า 19.20 (ต้องกำหนดรูปแบบเซลเป็นทั่วไป หรือตัวเลขนะ) เพื่อนำค่าไปเปรียบเทียบกับตารางอ้างอิงการกำหนด ช.ม.โอที
ไล่ดูตามไฟล์แนบนะครับ
ปัญหาคือ
1. exell คุณสกุล.xls ซ้อนสูตรได้ไม่พอกับเงื่อนไขของตารางอ้างอิง ถ้าใช้ .xlsx เพียงพอ
2.เวลาออก ของคุณมีเศษนาทีไม่ตรงกับตารางอ้างอิง + กับข้อจำกัดที่1. จึงต้องสร้างการแปรเวลาใหม่ (คอลัมม์ M:AB การเทียบเวลานี้ทำใน VBA จะสะดวกกว่าครับ กำหนดช่วงเวลาและกำหนดค่าโอที เหมือนกับตัดเกรดคะแนนสอบครับ)
3.ในการคำนวณจากตารางข้อมูลคือตารางข้อมูลเวลาแยกไม่ออกว่าเป็นกะกลางวันหรือกะกลางคืน เช่นวันที่ 21/7/2011 หากคุณไม่ทำลูกศรไว้ก็คงไม่ทราบว่าทำงานกะกลางคืน
อาจเข้าใจได้ว่าเริ่มเข้างาน7.21 เลิกงาน 19.00 ดังนั้นควรกำหนดค่าเงื่อนไขก่อนว่าเป็นกะกลางวันหรือกลางคืน ดังนั้นในเบื่องต้นหากข้อมูลมาแบบนี้ คงต้องให้คุณกำหนดเลข 1 ในวันที่เป็นกะกลางคืน
4.ในตารางอ้างกะกลางคืนมีเวลาออกสูงสุด 9.00 แต่ความจริงมีผู้ออกเวลา 11.30 (วันที่ 13/7/2011) ดังนั้นควรทำตารางอ้างอิงเวลาออกให้ครอบคลุม เท่าที่บริษัทกำหนด
และตารางอ้างอิงกะกลาง เงื่อนไขอยูที่เวลาออก ดังนั้นควรปรับเปลี่ยนให้ช่วงเวลออกเป็นเงื่อนไขที่ชัดเจน เช่น Caseที่5. ไม่เข้าใจว่าทำไมมี 5.40 ซึ่งซ้ำกับ Caseที่1
5.การคิดค่าแรงว่ากี่เท่าอันนี้ไม่แน่ใจว่าคุณมีเงื่อนไขอย่างไร แต่เท่าที่สังเกตุ คิดว่าใครทำในวันหยุดในเวลาปกติ ได้โอที 8 ชม.คิดค่าแรง 1 เท่า ใครทำโอต่อในวันหยุด(ที่ไม่ใช่เสาร์มอาทิตย์) ก็ได้ 1.5 เท่า แต่ใครที่ทำโอวันเสาร์ อาทิตย์ ได้สามเท่า
อืม.. ลองดูตามไฟล์แนบนะครับ สูตรที่สร้างเราสร้างเฉพาะ แถวแรกของเดือนครับ จากนั้นก็ลากครับ
อันนี้เป็นความรู้เท่าที่ผมพอจะมีนะ และคำนวณเท่าที่เงื่อนไขคุณให้มา หากมีสิ่งใดเพิ่มเติมเดี๋ยวอาจารย์คงมาแก้ไขให้
ขอบคุณอาจารย์ด้วยครับ
Time July1 ' 2011.xls
You do not have the required permissions to view the files attached to this post.