สูตรคำนวณเพื่อตัดคะแนนคนที่มาสาย วันนี้ได้รับเมล์ฉบับหนึ่ง จากกลุ่มข่าว SiamHRM สอบถามเรื่อง การเขียนสูตรเพื่อหักคะแนนการมาสาย สำหรับการประเมินผลงานประจำปี มีรายละเอียดดังนี้
จากข้อมูลดังกล่าว ผมทำเป็นรูปภาพออกมาให้เห็นชัดๆ ดังรูป ![]() ก่อนหน้าที่ผมจะให้คำตอบ สำหรับคำถามนี้ ได้มีเพื่อนสมาชิกท่านอื่น ได้ให้คำตอบไว้บ้างแล้ว ซึ่งมีอยู่ 2 ท่าน 2 คำตอบ แต่เมื่อผมพิจารณาจากเงื่อนไขของผู้ถาม มีความเห็นว่า ทั้งสองคำตอบดังกล่าว ยังไม่ถูกต้อง เรามาดูและวิเคราะห์กันทีละคำตอบครับ คำตอบที่ 1 =IF(MINUTE(F2)>0,IF(MINUTE(F2)>15,IF(MINUTE(F2)>30,3,2),1),0) สำหรับสูตรในคำตอบที่ 1 นี้ จริงๆ แล้วก็ถือว่าใช้ได้ครับ แต่..ไม่ครอบคลุม ทั้งนี้เพราะ ฟังก์ชัน MINUTE นั้น จะส่งเฉพาะค่า "นาที" ออกมาเท่านั้น ไม่ได้คำนึงว่า จะเป็นเวลากี่ชั่วโมง กี่นาที ดังนั้น ถ้ามีพนักงานมาสาย 2ชั่วโมง 3 นาที จากสูตรข้างต้น ก็จะส่งค่าออกมาแค่ 3 นาที จึงถูกตัดคะแนนมาสายเพียง 1 คะแนนเท่านั้น (พนักงานคงยิ้ม แต่ฝ่ายบุคคลคงยิ้มไม่ออก) แต่ถ้ากรณีพนักงานมาสายไม่เกิน 1 ชั่วโมง สูตรนี้ถือว่าใช้ได้ครับ คำตอบที่ 2 =IF(F2>0,IF(F2<0.010416667, 1,IF(F2<0.020833333,2,3)),0) สำหรับสูตรในคำตอบที่ 2 นี้ ถือว่าใกล้เคียงครับ และน่าจะใช้ได้เลยล่ะ แต่เมื่อผมพิจารณาจากเงื่อนไขของผู้ถาม ผมเห็นว่า คำตอบนี้ก็ยังไม่ถูกต้องเช่นกัน ทั้งนี้ ถ้าแปลความหมายของสูตรนี้ออกมาจะได้ว่า ถ้า F2 น้อยกว่า 15 นาที หัก 1 คะแนน, และถ้า F2 น้อยกว่า 30 นาที หัก 2 คะแนน ไม่เช่นนั้น หัก 3 คะแนน ผมตั้งข้อสังเกตว่า แล้วถ้ามาสาย 15 นาทีพอดี หรือมาสาย 30 นาทีพอดี จะถูกตัดกี่คะแนน ก็ถ้าเป็นสูตรในคำตอบที่ 2 นี้ มาสาย 15 นาทีพอดี จะถูกตัด 2 คะแนน และมาสาย 30 นาทีพอดี จะถูกตัด 3 คะแนน ซึ่งดูแล้วว่า ไม่ตรงกับที่โจทย์กำหนด พนักงานคนไหนโดนตัดคะแนนตามนี้ คงโวยวายแน่ๆ ข้อสังเกต ตัวเลข 0.010416667 และ 0.020833333 คืออะไร? มาจากไหน? คนที่ใช้งาน Excel มาพอสมควร และเข้าใจเรื่องของ วัน-เวลา ใน Excel แล้วนั้นคงทราบว่า Excel ใช้เลขลำดับในการคำนวณเรื่องของวันที่และเวลา โดยเลขจำนวนเต็มแทนวัน เศษทศนิยมแทนเวลา (กรุณาอ่านรายละเอียดเพิ่มเติม เกี่ยวกับเรื่อง วัน-เวลาใน Excel ได้ที่ Blog ของคุณคนควน) ดังนั้นผมขอเสนอคำตอบที่ 3 ครับ =IF(F2>(1/24/60*30),3,IF(F2>(1/24/60*15),2,IF(F2>0,1,""))) เนื่องจากตัวเลข 0.010416667 และ 0.020833333 เป็นทศนิยมไม่รู้จบ แต่การที่สูตรในคำตอบที่ 2 ตัดทศนิยมมาแค่ 9 หลัก แม้จะดูว่าละเอียดแล้ว แต่ก็ใช่ว่าจะถูกต้อง เพราะค่าที่ได้ จะคลาดเคลื่อนจากเวลาจริงเล็กน้อย ซึ่งการคำนวณของ Excel สามารถจับได้ เช่นในกรณี มาสาย 30 นาทีพอดี จะให้ผลลัพธ์ที่ผิด (ส่วนกรณีมาสาย 15 นาทีพอดีก็เช่นเดียวกัน แต่ด้วยความฟลุ๊คของตัวเลขทศนิยม จึงทำให้ผลลัพธ์ออกมาถูกต้อง) ดังนั้น ผมจึงไม่ใช้เลขทศนิยมดังกล่าว แต่ใช้การคำนวณแทน โดยคิดจาก 1 วันมี 24 ชั่วโมง, 1 ชั่วโมงมี 60 นาที และสูตรที่ 3 ของผมนี้ ถ้ามาสาย 15 นาทีพอดี หรือ 30 นาทีพอดี ก็จะแสดงคะแนนที่จะต้องโดนตัดได้อย่างถูกต้อง เพิ่มเติมเกี่ยวกับการหาเวลาที่มาสาย จากรูปข้างบน ในคอลัมน์ F คือ ระยะเวลาที่มาสาย โดยคิดจาก เวลาเข้างานจริง (Attend Time) - เวลาเข้างานที่กำหนด (Office Time) สมมติว่า ถ้าเรามีข้อมูลพนักงานเป็นร้อยเป็นพันคน ซึ่งมีทั้งที่มาสาย และไม่สาย ถ้าเราใส่สูตร =D2-E2 และคัดลอกสูตรไปใช้กับทุกบรรทัด จะทำให้คนที่มา "ไม่สาย" จะมีเวลาเป็น ######## ซึ่งดูไม่งาม ดังนั้นที่ F2 จึงควรพิมพ์สูตรดังนี้ =IF(D2>E2, D2-E2, "") ฝากไว้เพื่อพิจารณาครับ คำตอบที่ 2
สำหรับ สูตรในคำตอบที่ 2 นี้ ถือว่าใกล้เคียงครับ และน่าจะใช้ได้เลยล่ะ แต่เมื่อผมพิจารณาจากเงื่อนไขของผู้ถาม ผมเห็นว่า คำตอบนี้ก็ยังไม่ถูกต้องเช่นกัน ทั้งนี้ ถ้าแปลความหมายของสูตรนี้ออกมาจะได้ว่า ถ้า F2 น้อยกว่า 15 นาที หัก 1 คะแนน, และถ้า F2 น้อยกว่า 30 นาที หัก 2 คะแนน ไม่เช่นนั้น หัก 3 คะแนน ผมตั้งข้อสังเกตว่า แล้วถ้ามาสาย 15 นาทีพอดี หรือมาสาย 30 นาทีพอดี จะถูกตัดกี่คะแนน ก็ถ้าเป็นสูตรในคำตอบที่ 2 นี้ มาสาย 15 นาทีพอดี จะถูกตัด 2 คะแนน และมาสาย 30 นาทีพอดี จะถูกตัด 3 คะแนน ซึ่งดูแล้วว่า ไม่ตรงกับที่โจทย์กำหนด พนักงานคนไหนโดนตัดคะแนนตามนี้ คงโวยวายแน่ๆ ==================== ผิดครับ สูตรนี้ถ้ามาสาย 15 นาที จะถูกหัก 1 คะแนนครับ และสูตรนี้จะทำให้คำนวนถูกได้โดย เปลี่ยนค่า 0.020833333 เป็น 0.020833334 ด้วยเหตุผลเรื่องการปัดเศษทศนิยมไม่จำกัดครับ โดย: karntapong IP: 58.9.169.90 วันที่: 12 กันยายน 2551 เวลา:0:53:01 น.
![]() ลิตช์ใช้ Excel แค่ตารางพื้นฐานเองค่า... ![]() โดย: ลิตช์ (Litchi
![]() สวัสดีครับคุณม๊า และคุณลิตช์
ขอบคุณที่แวะมาเยี่ยมครับ สวัสดีครับคุณ karntapong จริงอยู่ที่ มาสาย 15 นาทีพอดี จะถูกตัด 1 คะแนน แต่จริงๆ แล้วเป็นความฟลุ๊ค เนื่องจากการปัดเศษทศนิยมน่ะครับ (ซึ่งผมก็ได้เขียนไว้แล้วในบทความ) ทั้งนี้เพราะ 15 นาที จะเท่ากับ 1/24/60*15 แต่น้อยกว่า 0.010416667 (เนื่องจากการปัดเศษของจำนวนทศนิยมไม่รู้จบ) ในทำนองเดียวกัน 30 นาที ก็เท่ากับ 1/24/60*30 แต่ก็ยังมากกว่า 0.020833333 อยู่เล็กน้อย ดังนั้นการแก้ปัญหาโดยการเป็นทศนิยมหลักสุดท้ายเป็น 4 จะแก้ปัญหาได้ แต่ผมแค่จะบอกว่า 0.020833334 มันไม่เท่ากับ 30 นาทีน่ะครับ ผมไม่ได้บอกว่า สูตรในคำตอบที่สอง "ผิด" หรือส่งผลลัพธ์ที่ผิดในทางปฏิบัติ แต่บอกว่า "เป็นการตั้งเงื่อนไขที่ผิด" โดยถ้าอ่านความหมายจากสูตร ก็จะเป็นอย่างที่ผมอธิบายไว้ นั่นคือ "ถ้า F2 น้อยกว่า 15 นาที หัก 1 คะแนน, และถ้า F2 น้อยกว่า 30 นาที หัก 2 คะแนน ไม่เช่นนั้น หัก 3 คะแนน" ซึ่งจริงๆ แล้ว ถ้าจะตั้งเงื่อนไขตามโจทย์ ควรจะเป็นคือ "ถ้า F2 น้อยกว่าหรือเท่ากับ 15 นาที หัก 1 คะแนน, และถ้า F2 น้อยกว่าหรือเท่ากับ 30 นาที หัก 2 คะแนน ไม่เช่นนั้น หัก 3 คะแนน" เงื่อนไขแบบนี้จึงจะถือว่าถูกต้องครับ โดย: ครูเอก
![]() คุงเพ่ เค้าก็แค่ชอบผู้ชายหน้าตาดี ผิดตรงไหนค้า
อิอิ ไก่ไม่กินสมภารอยู่แร้น คริคริ โดย: patra_vet
![]() โห วันนี้ดูบล๊อกไม่เข้าใจฮ่ะ คิดมะเป็น เด้กป4อย่างอะฮั้น อิๆ
แหม ครูก้อ น้องหมอเขาอาจทำอร่อยกว่าเราก็ได้ อยากรู้ก็ตามไปชิมสิจ๊ะ ฝันดีค่า ![]() โดย: kai (aitai
![]() สวัสดีค่ะครูเอก
มาเร้วววค่ะ เพิ่งจะกลับมา รีบมาเยี่ยมครู ช่วงนี้เพื่อนๆหลายคนเงียบไป คงจะกำลังเคลียดเรื่องบ้านเมือง ครูเอกละค่ะ เคลียดมั้ย ![]() โดย: Opey
![]() 0.0208449074074074* (0:30:01)
0.0208333333333333* (0:30:00) ตามนี้แหละครับ ขึ้นอยู่กับว่าหน่วยวัดละเอียดขนาดไหน ถ้าเอาละเอียดเกินหลักวินาที วิธีผมก็จะใช้ไม่ได้ครับ โดย: karntapong IP: 58.9.176.73 วันที่: 15 กันยายน 2551 เวลา:12:34:55 น.
โอ้โห้ excel ชั้นเทพ...
อยากรบกวนถามครูเอกบ้าง (นอกเรื่องจาก excel) เรื่องโปรแกรม winfax ไม่ทราบว่า ครูเอกใช้โปรแกรมตัวนี้บ่อยไหมคะ หนูอยากทราบว่า ทำไม เวลาว่าใช้โปรแกรมนี้ส่ง fax ไปยังเบอร์นึง เมื่อส่งเสร็จสิ้นแล้ว ทำไมเบอร์มันยังกลับมาต่อท้ายที่ outbox เพื่อรอการส่งต่ออีกครั้ง ทำให้เป็นการส่ง fax ซ้ำไปเบอร์เดิมเป็นครั้งที่สอง ทำอย่างไรถึงจะไม่ซ้ำค่ะ รบกวนตอบที่เมลนี้นะคะ ขอบคุณค่ะ wanichtha@hotmail.com โดย: อยากรบกวนถาม.. IP: 58.147.35.228 วันที่: 15 กันยายน 2551 เวลา:16:33:46 น.
สวัสดีครับ คุณ karntapong
![]() ผมก็บอกแล้วงัยครับว่า "ผมไม่ได้บอกว่าสูตรผิด" แต่ผมบอกว่า "เป็นการตั้งเงื่อนไขที่ไม่สอดคล้องกับโจทย์" ทั้งนี้เพราะ ผมเคยเจอปัญหาหนึ่ง คือการใช้ IF เพื่อตัดเกรด โดยผู้ใช้เขียนสูตร โดยตั้งเงื่อนไขอย่างในสูตรคำตอบที่ 2 แล้วเกิดการผิดพลาด เนื่องจากคะแนนที่ตรวจสอบนั้น มีบางคะแนนที่หลุดค่าไปจากในสูตร ซึ่งไม่ว่าจะเป็นโจทย์นี้ หรือโจทย์การตัดเกรด หากใช้ IF ก็จะเขียนโครงสร้างสูตรเหมือนกัน ดังนั้น ผมจึงอยากให้ผู้ใช้เข้าใจเงื่อนไขจริงๆ ว่าเป็นอย่างไร ไม่ใช่อาศัยความบังเอิญของ คุณสมบัติในการปัดเศษทศนิยมครับ จึงขอชี้แจงตามนี้ครับ ด้วยความเคารพ ******************************** สวัสดีครับ คุณ อยากรบกวนถาม.. ผมเองก็เคยใช้ WinFax Pro มานานแล้ว แต่ตอนหลังนี้ เปลี่ยนมาใช้ WinXP Fax เพราะมันมีอยู่แล้วในวินโดวส์ ชักจำไม่ได้แล้วว่า WinFax นั้น มันมีหน้าตายังงัย ต้องขอโทษด้วยนะครับ โดย: ครูเอก
![]() หวัดดีครับ พี่เอก
ขอบคุณที่ Link ไปยัง Blog ผมครับ สำหรับปัญหาเรื่องการแสดงค่า # จนเต็มความกว้างเซลล์สามารถใช้สูตรได้ดังนี้ครับ =Max(0,D2-E2) และสำหรับการหาค่า Point ตามโจทย์สามารถใช้สูตรที่ G2 ดังนี้ครับ =IF(F2>"0:30"+0,3,IF(F2>"0:15"+0,2,1)) โดย: คนควน
![]() คำถามช่วยตอบหน่อยครับ
คือ ผมต้องการระบุวันสิ้นสุดการทำงานลงในสัญญาการทำงานของพนักจากวันที่เริ่ม นับไปอีก แล้วแต่เราจะตกลง (จำนวนวันที่ตกลงกันนะครับ) ต้องการรู้วันที่หลังจากที่ตกลงกันแล้ว ผมต้องมาเสียเวลาในเปิดนับปฏิทินกันกี่นะ ทำให้งานช้าลงไปอีก ช่วยนะนำด้วยนะครับ โดย: ลักเรียน IP: 118.172.137.91 วันที่: 3 ตุลาคม 2551 เวลา:15:51:59 น.
sb_tt_12@hotmail.com
โดย: ลักเรียน IP: 118.172.137.91 วันที่: 3 ตุลาคม 2551 เวลา:15:53:21 น.
ขอบคุณมากเลยครับ ผมเข้าใจแล้วว่าต้องทำอย่างไร เป็นเพราะ Web ของอาจารย์ ทำให้คิดอะไรที่เกี่ยวกับการทำงานของ Excel ได้อีหลายแบบ ขอบคุณครับ
โดย: ลักเรียน IP: 118.172.137.91 วันที่: 3 ตุลาคม 2551 เวลา:16:14:36 น.
สวัสดีครับ คุณลักเรียน
การหา "วันที่สิ้นสุด" นั้น ก็เอา "วันที่เริ่มต้น" ตั้ง แล้วบวกด้วย "จำนวนวัน" ที่ตกลงกันไว้ ก็จะได้วันที่สิ้นสุดออกมาครับ แต่มีข้อพึงระวังคือ การบวกวันที่นั้น จะไม่ได้นับวันเริ่มต้นด้วย แต่จะเริ่มนับจากวันถัดไป เช่น สัญญา 5 วันนับจากวันปัจจุบัน คุณจะเอาวันที่ปัจจุบัน บวก 5 ไม่ได้นะครับ มิฉะนั้นจะกลายเป็น 6 วัน คุณจะต้องบวกด้วย 4 เพราะเมื่อรวมกับวันปัจจุบันด้วย ก็จะเป็น 5 วันครับ โดย: ครูเอก
![]() thanks
โดย: หนูชอบงง IP: 118.172.197.3 วันที่: 31 ตุลาคม 2551 เวลา:6:48:53 น.
ต้องการทราบว่า Excel สามารถเรียงคำตามตัวอักษรได้หรือเปล่า
โดย: เต่า IP: 61.7.141.141 วันที่: 22 พฤศจิกายน 2551 เวลา:13:32:09 น.
สวัสดีครับ คุณเต่า
ถ้าหมายถึง การจัดเรียงข้อมูลแต่ละเซล ก็ใช้การ Sort ครับ โดยเข้าไปที่เมนู Data > Sort.. แล้วเข้าไปเลือกว่า จะเรียงจากมากไปน้อย หรือจากน้อยไปมาก โดย: ครูเอก
![]() Excelข้อมูลความจุ size เกินความเป็นจริงเป็นเพราะอะไรครับ อย่างเช่น ข้อมูลความจุจริงเท่ากับ 192 KB
แต่มันเปลี่ยนเป็น 4.01MB ครูคิดว่าไงครับ ช่วยกรุณา บอกผมหน่อยครับ เพราะว่าผมส่งข้อมูลทางอิน เตอร์เน็ตแล้วมันช้า โดย: ศักดิ์ดา IP: 125.26.168.216 วันที่: 23 ธันวาคม 2551 เวลา:13:14:45 น.
ตอบคุณศักดิ์ดา
ลองดูว่า มีการใส่รูปภาพในลงไฟล์หรือไม่ ถ้าใส่..รูปนั้นอาจจะมีขนาดใหญ่มาก ให้ลดความละเอียดของรูปลง นอกจากนั้น ให้ดูว่ามีการจัดรูปแบบเซลเกินความจำเป็นหรือไม่ เช่น การเติมสี สีเส้น หรือการจัดรูปแบบเซล ไปยังเซลที่ยังไม่ถูกใช้งาน (เช่นเลือกจัดรูปแบบทั้งคอลัมน์ แต่ใช้งานจริง แค่ 3 บรรทัด เป็นต้น) ให้ลบรูปแบบที่ไม่ได้ใช้งานออกบ้าง จะช่วยให้ไฟล์เล็กลงครับ ลองดูก่อนนะครับ โดย: ครูเอก
![]() |
บทความทั้งหมด
|
แวะเข้ามาสวัสดีครูเอกอ่ะค่ะ
แบบว่าม๊าไม่ค่อยเก่งเรื่องคำนวณเลย
แงงงงงงงงงงงงงงโง่อ่ะค่ะ