Công Thức Tính Số Giờ Làm Ca đêm | Giải Pháp Excel
Có thể bạn quan tâm
- Trang chủ Có gì mới Hoạt động gần nhất Tác giả
- Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
- Video Video về Excel Video về tin học khác Tin tức về tin học chung
- Thông tin mới Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
- Tài nguyên Đánh giá mới nhất Tìm tài nguyên
- Đóng góp
Tìm kiếm
Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Tìm kiếm Tìm nâng cao…- Hoạt động gần nhất
- Đăng ký
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
- Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
- Trang chủ
- Thành viên giúp nhau
- Thành viên giúp nhau
- Thread starter th_dungdn
- Ngày gửi 2/10/19
th_dungdn
Thành viên mới
Tham gia 14/5/12 Bài viết 21 Được thích 1 Dear anh/chị, Công ty em mới thành lập nên ca kíp chưa rõ ràng. Hiện tại công ty em đang dùng máy chấm công và có hơn 100 nhân viên. Em đang nghiên cứu cách để tính số giờ làm ca đêm cho người lao động mà tính mãi vẫn chưa được. Theo quy định: cứ làm từ 22:00 đến 06:00 thì được tính là ca đêm. Trong file em đính kèm có một số trường hợp đặc biệt, giờ vào và giờ ra đều không rơi vào khung giờ từ 22:00 đến 06:00 nhưng thực tế vẫn có ca đêm, ví dụ 21:45-06:45 (Trường hợp này giờ làm việc là 9h, trong đó giờ làm ca đêm là 8h). Cấu trúc bảng của em như hình dưới. Anh/chị giúp em về công thức tính số giờ làm ca đêm với ạ. Em không biết VBA nên em làm toàn công thức thôi ạ. Em cảm ơn anh/chị rất nhiều ạ.Ngày | Thứ | Giờ vào | Giờ ra | Tổng số giờ LV | Tổng số giờ làm ca đêm (Tính tay) | Tổng số giờ làm ca đêm (công thức) |
1 | CN | 05:30 | 14:30 | 9 | 0,5 | |
2 | Hai | 05:30 | 22:30 | 17 | 1 | |
3 | Ba | 14:30 | 22:30 | 8 | 0,5 | |
4 | Tư | 23:00 | 23:30 | 0,5 | 0,5 | |
5 | Năm | 13:00 | 05:00 | 16 | 7 | |
6 | CN | |||||
7 | Hai | 4:00 | 23:00 | 19 | 3 | |
8 | Ba | 4:00 | 05:30 | 1,5 | 1,5 | |
9 | Tư | 4:00 | 23:00 | 19 | 3 | |
10 | Năm | 23:00 | 00:00 | 1 | 1 | |
11 | CN | |||||
12 | Hai | 20:00 | 00:00 | 4 | 2 | |
13 | Ba | 23:00 | 01:30 | 2,5 | 2,5 | |
14 | Tư | 23:00 | 10:00 | 11 | 7 | |
15 | Năm | 00:00 | 10:00 | 10 | 6 |
File đính kèm
- Hoi cach tinh gio lam ca dem.xlsx 11.7 KB · Đọc: 198
th_dungdn
Thành viên mới
Tham gia 14/5/12 Bài viết 21 Được thích 1 Có tiền bối nào giúp em với ạ. Huhuhuuuu. HHieuCD
Chuyên gia GPE
Tham gia 14/9/10 Bài viết 9,850 Được thích 23,464th_dungdn đã viết: Dear anh/chị, Công ty em mới thành lập nên ca kíp chưa rõ ràng. Hiện tại công ty em đang dùng máy chấm công và có hơn 100 nhân viên. Em đang nghiên cứu cách để tính số giờ làm ca đêm cho người lao động mà tính mãi vẫn chưa được. Theo quy định: cứ làm từ 22:00 đến 06:00 thì được tính là ca đêm. Trong file em đính kèm có một số trường hợp đặc biệt, giờ vào và giờ ra đều không rơi vào khung giờ từ 22:00 đến 06:00 nhưng thực tế vẫn có ca đêm, ví dụ 21:45-06:45 (Trường hợp này giờ làm việc là 9h, trong đó giờ làm ca đêm là 8h). Cấu trúc bảng của em như hình dưới. Anh/chị giúp em về công thức tính số giờ làm ca đêm với ạ. Em không biết VBA nên em làm toàn công thức thôi ạ. Em cảm ơn anh/chị rất nhiều ạ.G2 =MEDIAN(D2*24,6,0)+IF(D2>=C2,MEDIAN(D2*24,22,24)-MEDIAN(C2*24,6,0),24)-MEDIAN(C2*24,22,24) copy xuống TNhấp chuột vào đây để mở rộng...
Ngày Thứ Giờ vào Giờ ra Tổng số giờ LV Tổng số giờ làm ca đêm (Tính tay) Tổng số giờ làm ca đêm (công thức) 1 CN 05:30 14:30 9 0,5 2 Hai 05:30 22:30 17 1 3 Ba 14:30 22:30 8 0,5 4 Tư 23:00 23:30 0,5 0,5 5 Năm 13:00 05:00 16 7 6 CN 7 Hai 4:00 23:00 19 3 8 Ba 4:00 05:30 1,5 1,5 9 Tư 4:00 23:00 19 3 10 Năm 23:00 00:00 1 1 11 CN 12 Hai 20:00 00:00 4 2 13 Ba 23:00 01:30 2,5 2,5 14 Tư 23:00 10:00 11 7 15 Năm 00:00 10:00 10 6
th_dungdn
Thành viên mới
Tham gia 14/5/12 Bài viết 21 Được thích 1HieuCD đã viết: G2 =MEDIAN(D2*24,6,0)+IF(D2>=C2,MEDIAN(D2*24,22,24)-MEDIAN(C2*24,6,0),24)-MEDIAN(C2*24,22,24) copy xuống Nhấp chuột vào đây để mở rộng...Dạ em cảm ơn anh nhiều ạ. Em chưa hiểu lắm cách anh suy luận để xây dựng hàm như vậy, anh hướng dẫn em với ạ. Bên cạnh đó, có 3 trường hợp số giờ tính theo công thức anh hướng dẫn bị lệch so với số em tính tay ạ. Anh giúp em chỉnh lại công thức với ạ. Em cảm ơn anh nhiều ạ.
Ngày | Thứ | Giờ vào | Giờ ra | Tổng số giờ LV | Tổng số giờ làm ca đêm (Tính tay) | Tổng số giờ làm ca đêm (công thức) |
7 | Hai | 4:00 | 23:00 | 19 | 3 | 8 |
8 | Ba | 4:00 | 05:30 | 1,5 | 1,5 | 7,5 |
9 | Tư | 4:00 | 23:00 | 19 | 3 | 8 |
batman1
Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768th_dungdn đã viết: Bên cạnh đó, có 3 trường hợp số giờ tính theo công thức anh hướng dẫn bị lệch so với số em tính tay ạ.Muốn kết quả đúng thì dữ liệu phải là thời gian (Time). Tức vd. 14:30 chứ không thể là text '14:30 như hiện tại. G2 - cột G định dạng là Time vd. 23:30 Mã:Sao chép. =MOD(D2-C2;1)-MEDIAN("06:00:00";"22:00:00";D2)+MEDIAN("06:00:00";"22:00:00";C2) -(C2>D2)*16/24 hoặc G2 - cột G định dạng là số. Mã:Sao chép. =MOD(D2-C2;1)*24-MEDIAN(6;22;D2*24)+MEDIAN(6;22;C2*24) -(C2>D2)*16 TNhấp chuột vào đây để mở rộng...
th_dungdn
Thành viên mới
Tham gia 14/5/12 Bài viết 21 Được thích 1batman1 đã viết: Muốn kết quả đúng thì dữ liệu phải là thời gian (Time). Tức vd. 14:30 chứ không thể là text '14:30 như hiện tại. G2 - cột G định dạng là Time vd. 23:30 Mã:Sao chép. =MOD(D2-C2;1)-MEDIAN("06:00:00";"22:00:00";D2)+MEDIAN("06:00:00";"22:00:00";C2) -(C2>D2)*16/24 hoặc G2 - cột G định dạng là số. Mã:Sao chép. =MOD(D2-C2;1)*24-MEDIAN(6;22;D2*24)+MEDIAN(6;22;C2*24) -(C2>D2)*16 Nhấp chuột vào đây để mở rộng...Dạ em lấy công thức của anh x 24 thì ra đúng kết quả em tính tay ạ. Sau khi em chỉnh toàn bộ sang định dạng giờ thì công thức của anh HieuCD cũng chính xác 100%. Em vẫn chưa hiểu là tại sao các dòng trên, vẫn với định dạng text nhưng kết quả vẫn đúng, nhưng riêng 3 dòng ngày 7, 8, 9 lại sai ạ? Tuy nhiên, nếu giờ ra =0:00 thì công thức của anh HieuCD tính ra kết quả là 2 giờ cho tất cả các trường hợp. (Ví dụ giờ vào: 2:00 sáng; giờ ra là 12h đêm tức 00:00, thì thay vì tính ra kết quả là 6 thì công thức trên tính ra kết quả là 2 giờ ạ). Hơn nữa, em không hiểu ý nghĩa của công thức là như thế nào ạ. Sao anh và anh HieuCD có thể suy luận để ra được công thức ngắn gọn mà chính xác như vậy? Thật là ngưỡng mộ. Hai anh có thể bỏ chút thời gian để giảng cho em được không anh ơi. Em cảm ơn hai anh rất nhiều nhiều ạ. Lần chỉnh sửa cuối: 4/10/19 P
ppc0312
whom?
Tham gia 2/4/08 Bài viết 623 Được thích 319th_dungdn đã viết: Dạ em lấy công thức của anh x 24 thì ra đúng kết quả em tính tay ạ. Sau khi em chỉnh toàn bộ sang định dạng giờ thì công thức của anh HieuCD cũng chính xác 100%. Có điều em vẫn chưa hiểu là tại sao các dòng trên, vẫn với định dạng text nhưng kết quả vẫn đúng, nhưng riêng 3 dòng ngày 7, 8, 9 lại sai ạ? Hơn nữa, em không hiểu ý nghĩa của công thức là như thế nào ạ. Sao anh và anh HieuCD có thể suy luận để ra được công thức ngắn gọn mà chính xác như vậy? Thật là ngưỡng mộ. Hai anh có thể bỏ chút thời gian để giảng cho em được không anh ơi. Em cảm ơn hai anh rất nhiều nhiều ạ. Nhấp chuột vào đây để mở rộng...Ra được công thức là vì họ luyện nhiêu và có hướng nghĩ sâu , bạn cứ tự học, đọc và làm nhiều vấn đề liên quan đến excel công thức ...vv thì sẽ ắt sẽ nhanh làm được tương tự thôi. Còn nhanh hơn nữa là không làm được thì nhờ thì thuê T
th_dungdn
Thành viên mới
Tham gia 14/5/12 Bài viết 21 Được thích 1ppc0312 đã viết: Ra được công thức là vì họ luyện nhiêu và có hướng nghĩ sâu , bạn cứ tự học, đọc và làm nhiều vấn đề liên quan đến excel công thức ...vv thì sẽ ắt sẽ nhanh làm được tương tự thôi. Còn nhanh hơn nữa là không làm được thì nhờ thì thuê Nhấp chuột vào đây để mở rộng...Dạ em suy nghĩ mãi mà cũng không ra vì sao mình lại có được hướng suy luận để ra được công thức như vậy ấy ạ. B
batman1
Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768th_dungdn đã viết: Dạ em suy nghĩ mãi mà cũng không ra vì sao mình lại có được hướng suy luận để ra được công thức như vậy ấy ạ. Nhấp chuột vào đây để mở rộng...Khi suy nghĩ về một bài toán thì có rất nhiều ý nghĩ thoáng hiện thoáng mất liên tục trong đầu. Có rất nhiều chi tiết xuất hiện. Tùy vào kinh nghiệm, khả năng tư duy (cái máy mới mua về mà không sử dụng, nằm hộp vài năm ắt sẽ gỉ. Bộ óc cũng vậy) mà ta dễ dàng nắm bắt được những ý rất "hứa hẹn" cần phải xem xét kỹ. Nhiều kinh nghiệm và tư duy sắc bén sẽ giúp tìm ra ý tưởng ở dạng chung chung. Sau đó cần xem xét kỹ, cụ thể hóa các chi tiết. Sau cùng là kiểm nghiệm và chứng minh hoặc bác bỏ. Khi xét bài toán mà tôi phát biểu dưới đây thì luôn có câu hỏi: khi c (d) nằm trong / ngoài đoạn ̣(a; b) thì ...? Và cũng từ đó có "ánh chớp" MEDIAN lóe lên trong đầu. Tư duy là một quá trình phức tạp. Vì thế tôi không thể nói chính xác đến từng dấu phẩy là tôi đã tư duy như thế nào. Có hàng nghìn ý nghĩ xuất hiện và biến mất. Ai mà nhớ được. Nhưng bạn hoàn toàn có thể xét từng trường hợp (vẽ lên giấy thôi). Số trường hợp hữu hạn và không nhiều. Ta xét bài toán. Cho 2 đoạn (a; b) và (c; d) trên cùng một trục. Trục này có thể là trục thời gian, quãng đường. Nhưng nói cho cùng thì đều là trục số vì a, b, c và d là những con số. Câu hỏi đặt ra là đoạn chung của 2 đoạn cho trươc có độ dài bằng bao nhiêu. Ta giả thiết là a <= b và c <= d vì luôn xác định (được cho trước a, b, c và d). Gọi điểm đầu của đoạn chung là x1 và điểm cuối của đoạn chung là x2. Gọi độ lớn đoạn chung là s ta có s = x2-x1. Ta xét các trường hợp: A. c <= a - d <= a -> đoạn chung có độ lớn = 0. Độ lớn đoạn chung là a - a. Ta viết dưới dạng a - a chứ không phải các dạng khác, vd. s = b - b, vì ở 2 trường hợp tiếp theo ta có dạng (... - a) - a <= d <= b -> x1 = a, x2 = d. Độ lớn đoạn chung là d-a - b <= d -> x1 = a, x2 = b. Độ lớn đoạn chung là b-a Ta thấy rằng trong cả 3 trường hợp nhỏ thì độ dài đoạn chung có dạng e-a, với e = a khi d <= a, e = d khi a <= d <= b, và e = b khi b <= d. Tức tùy thuộc vào vị trí của d so với đoạn (a; b) mà ta có e = a, e = d hay e = b. 3 trường hợp trên chính là 3 trường hợp: - a là điểm giữa trong 3 điểm a, b, d -> e = a - d là điểm giữa trong 3 điểm a, b, d -> e = d - b là điểm giữa trong 3 điểm a, b, d -> e = b. Khái niệm điểm giữa này làm ta liên tưởng tới MEDIAN. - a là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = a - d là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = d - b là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = b. Tức ta luôn có s = MEDIAN(a; b; d)-a B. a <= c <= b - d <= b -> x1 = c, x2 = d. Độ lớn đoạn chung là d-c - b <= d -> x1 = c, x2 = b. Độ lớn đoạn chung là b-c. Tức - d là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = d. s = d-c = MEDIAN(a; b; d) - c - b là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = b. s = b-c = MEDIAN(a; b; d) - c Tức ta luôn có s = MEDIAN(a; b; d) - c C. b <= c. Trong trường hợp này s = 0. Rõ ràng b là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = b. Vậy s = 0 = b - b = MEDIAN(a; b; d)-b Tổng kết: A. c <= a <=> a là điểm giữa trong 3 điểm a; b; c <=> MEDIAN(a; b; c) = a. Ta có s = MEDIAN(a; b; d)-a = MEDIAN(a; b; d) - MEDIAN(a; b; c) B. a <= c <= b <=> c là điểm giữa trong 3 điểm a; b; c <=> MEDIAN(a; b; c) = c Ta có s = MEDIAN(a; b; d) - c = MEDIAN(a; b; d) - MEDIAN(a; b; c) C. b <= c <=> b là điểm giữa trong 3 điểm a, b, c <=> MEDIAN(a; b; c) = b Ta có s = MEDIAN(a; b; d)-b = MEDIAN(a; b; d) - MEDIAN(a; b; c) Vậy ta luôn có s = MEDIAN(a; b; d) - MEDIAN(a; b; c) Do vai trò của 2 đoạn (a; b) và (c; d) như nhau nên công thức sau cũng đúng - đổi vai trò của (a; b) và (c; d) với nhau: s = MEDIAN(c; d; b) - MEDIAN(c; d; a) ------------ Công thức luôn đúng với a, b, c và d là các điểm chính xác tuần tự trên trục số. Khi làm bài trong Excel thì ta lại cho a, b, c hoặc d những giá trị không đúng với tuần tự trên trục số. Vì thế đôi lúc phải chỉnh sửa công thức. Tôi cho ví dụ. 1. Các thời điểm a, b, c, d đều trong cùng ngày. Trong trường hợp này các điểm a, b, c và d đều nằm đúng vị trí tương quan lẫn nhau trên trục số và cứ dùng công thức trên mà xử lý. Vd. cho trường hợp này là các ca 6-14 và 14-22 và không có tăng ca "lẹm" sang ngày khác. 2. Thời điểm c và d khác ngày với ca 22-6. Thậm chí các điểm a, b, c hoặc d không cùng ngày với cả 6-14 và 14-22 nhưng có tăng ca. Tại sao trong trường hợp này không dùng được công thức y hệt như trên mà phải biến tấu, chỉnh sửa? Lý do là các điểm a, b, c và d không được cho với trình tự như cần phải có trên trục số. Nếu ca 3 được cho dưới dạng 22-30 và cả ngày làm thực vd. là 21-32 thì cứ công thức ở trên mà xử lý vì các điểm 22, 30 và 21, 32 đều đúng với vị trí cần có trên trục số. Nhưng trong Excel ta lại nhập thành 22-6 và 21-8 nên điểm b và điểm d không nằm đúng vị trí cần có trên trục số. Vì thế không thể dùng công thức y hệt ở trên. Cần phải chỉnh sửa và biến tấu đi. P
ppc0312
whom?
Tham gia 2/4/08 Bài viết 623 Được thích 319batman1 đã viết: Khi suy nghĩ về một bài toán thì có rất nhiều ý nghĩ thoáng hiện thoáng mất liên tục trong đầu. Có rất nhiều chi tiết xuất hiện. Tùy vào kinh nghiệm, khả năng tư duy (cái máy mới mua về mà không sử dụng, nằm hộp vài năm ắt sẽ gỉ. Bộ óc cũng vậy) mà ta dễ dàng nắm bắt được những ý rất "hứa hẹn" cần phải xem xét kỹ. Nhiều kinh nghiệm và tư duy sắc bén sẽ giúp tìm ra ý tưởng ở dạng chung chung. Sau đó cần xem xét kỹ, cụ thể hóa các chi tiết. Sau cùng là kiểm nghiệm và chứng minh hoặc bác bỏ. Khi xét bài toán mà tôi phát biểu dưới đây thì luôn có câu hỏi: khi c (d) nằm trong / ngoài đoạn ̣(a; b) thì ...? Và cũng từ đó có "ánh chớp" MEDIAN lóe lên trong đầu. Tư duy là một quá trình phức tạp. Vì thế tôi không thể nói chính xác đến từng dấu phẩy là tôi đã tư duy như thế nào. Có hàng nghìn ý nghĩ xuất hiện và biến mất. Ai mà nhớ được. Nhưng bạn hoàn toàn có thể xét từng trường hợp (vẽ lên giấy thôi). Số trường hợp hữu hạn và không nhiều. Ta xét bài toán. Cho 2 đoạn (a; b) và (c; d) trên cùng một trục. Trục này có thể là trục thời gian, quãng đường. Nhưng nói cho cùng thì đều là trục số vì a, b, c và d là những con số. Câu hỏi đặt ra là đoạn chung của 2 đoạn cho trươc có độ dài bằng bao nhiêu. Ta giả thiết là a <= b và c <= d vì luôn xác định (được cho trước a, b, c và d). Gọi điểm đầu của đoạn chung là x1 và điểm cuối của đoạn chung là x2. Gọi độ lớn đoạn chung là s ta có s = x2-x1. Ta xét các trường hợp: A. c <= a - d <= a -> đoạn chung có độ lớn = 0. Độ lớn đoạn chung là a - a. Ta viết dưới dạng a - a chứ không phải các dạng khác, vd. s = b - b, vì ở 2 trường hợp tiếp theo ta có dạng (... - a) - a <= d <= b -> x1 = a, x2 = d. Độ lớn đoạn chung là d-a - b <= d -> x1 = a, x2 = b. Độ lớn đoạn chung là b-a Ta thấy rằng trong cả 3 trường hợp nhỏ thì độ dài đoạn chung có dạng e-a, với e = a khi d <= a, e = d khi a <= d <= b, và e = b khi b <= d. Tức tùy thuộc vào vị trí của d so với đoạn (a; b) mà ta có e = a, e = d hay e = b. 3 trường hợp trên chính là 3 trường hợp: - a là điểm giữa trong 3 điểm a, b, d -> e = a - d là điểm giữa trong 3 điểm a, b, d -> e = d - b là điểm giữa trong 3 điểm a, b, d -> e = b. Khái niệm điểm giữa này làm ta liên tưởng tới MEDIAN. - a là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = a - d là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = d - b là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = b. Tức ta luôn có s = MEDIAN(a; b; d)-a B. a <= c <= b - d <= b -> x1 = c, x2 = d. Độ lớn đoạn chung là d-c - b <= d -> x1 = c, x2 = b. Độ lớn đoạn chung là b-c. Tức - d là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = d. s = d-c = MEDIAN(a; b; d) - c - b là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = b. s = b-c = MEDIAN(a; b; d) - c Tức ta luôn có s = MEDIAN(a; b; d) - c C. b <= c. Trong trường hợp này s = 0. Rõ ràng b là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = b. Vậy s = 0 = b - b = MEDIAN(a; b; d)-b Tổng kết: A. c <= a <=> a là điểm giữa trong 3 điểm a; b; c <=> MEDIAN(a; b; c) = a. Ta có s = MEDIAN(a; b; d)-a = MEDIAN(a; b; d) - MEDIAN(a; b; c) B. a <= c <= b <=> c là điểm giữa trong 3 điểm a; b; c <=> MEDIAN(a; b; c) = c Ta có s = MEDIAN(a; b; d) - c = MEDIAN(a; b; d) - MEDIAN(a; b; c) C. b <= c <=> b là điểm giữa trong 3 điểm a, b, c <=> MEDIAN(a; b; c) = b Ta có s = MEDIAN(a; b; d)-b = MEDIAN(a; b; d) - MEDIAN(a; b; c) Vậy ta luôn có s = MEDIAN(a; b; d) - MEDIAN(a; b; c) Do vai trò của 2 đoạn (a; b) và (c; d) như nhau nên công thức sau cũng đúng - đổi vai trò của (a; b) và (c; d) với nhau: s = MEDIAN(c; d; b) - MEDIAN(c; d; a) ------------ Công thức luôn đúng với a, b, c và d là các điểm chính xác tuần tự trên trục số. Khi làm bài trong Excel thì ta lại cho a, b, c hoặc d những giá trị không đúng với tuần tự trên trục số. Vì thế đôi lúc phải chỉnh sửa công thức. Tôi cho ví dụ. 1. Các thời điểm a, b, c, d đều trong cùng ngày. Trong trường hợp này các điểm a, b, c và d đều nằm đúng vị trí tương quan lẫn nhau trên trục số và cứ dùng công thức trên mà xử lý. Vd. cho trường hợp này là các ca 6-14 và 14-22 và không có tăng ca "lẹm" sang ngày khác. 2. Thời điểm c và d khác ngày với ca 22-6. Thậm chí các điểm a, b, c hoặc d không cùng ngày với cả 6-14 và 14-22 nhưng có tăng ca. Tại sao trong trường hợp này không dùng được công thức y hệt như trên mà phải biến tấu, chỉnh sửa? Lý do là các điểm a, b, c và d không được cho với trình tự như cần phải có trên trục số. Nếu ca 3 được cho dưới dạng 22-30 và cả ngày làm thực vd. là 21-32 thì cứ công thức ở trên mà xử lý vì các điểm 22, 30 và 21, 32 đều đúng với vị trí cần có trên trục số. Nhưng trong Excel ta lại nhập thành 22-6 và 21-8 nên điểm b và điểm d không nằm đúng vị trí cần có trên trục số. Vì thế không thể dùng công thức y hệt ở trên. Cần phải chỉnh sửa và biến tấu đi. Nhấp chuột vào đây để mở rộng...Đọc xong thì càng khó Suy nghĩ mỗi người mỗi cách, học theo cách người khác cũng khó đạt T
th_dungdn
Thành viên mới
Tham gia 14/5/12 Bài viết 21 Được thích 1batman1 đã viết: Khi suy nghĩ về một bài toán thì có rất nhiều ý nghĩ thoáng hiện thoáng mất liên tục trong đầu. Có rất nhiều chi tiết xuất hiện. Tùy vào kinh nghiệm, khả năng tư duy (cái máy mới mua về mà không sử dụng, nằm hộp vài năm ắt sẽ gỉ. Bộ óc cũng vậy) mà ta dễ dàng nắm bắt được những ý rất "hứa hẹn" cần phải xem xét kỹ. Nhiều kinh nghiệm và tư duy sắc bén sẽ giúp tìm ra ý tưởng ở dạng chung chung. Sau đó cần xem xét kỹ, cụ thể hóa các chi tiết. Sau cùng là kiểm nghiệm và chứng minh hoặc bác bỏ. Khi xét bài toán mà tôi phát biểu dưới đây thì luôn có câu hỏi: khi c (d) nằm trong / ngoài đoạn ̣(a; b) thì ...? Và cũng từ đó có "ánh chớp" MEDIAN lóe lên trong đầu. Tư duy là một quá trình phức tạp. Vì thế tôi không thể nói chính xác đến từng dấu phẩy là tôi đã tư duy như thế nào. Có hàng nghìn ý nghĩ xuất hiện và biến mất. Ai mà nhớ được. Nhưng bạn hoàn toàn có thể xét từng trường hợp (vẽ lên giấy thôi). Số trường hợp hữu hạn và không nhiều. Ta xét bài toán. Cho 2 đoạn (a; b) và (c; d) trên cùng một trục. Trục này có thể là trục thời gian, quãng đường. Nhưng nói cho cùng thì đều là trục số vì a, b, c và d là những con số. Câu hỏi đặt ra là đoạn chung của 2 đoạn cho trươc có độ dài bằng bao nhiêu. Ta giả thiết là a <= b và c <= d vì luôn xác định (được cho trước a, b, c và d). Gọi điểm đầu của đoạn chung là x1 và điểm cuối của đoạn chung là x2. Gọi độ lớn đoạn chung là s ta có s = x2-x1. Ta xét các trường hợp: A. c <= a - d <= a -> đoạn chung có độ lớn = 0. Độ lớn đoạn chung là a - a. Ta viết dưới dạng a - a chứ không phải các dạng khác, vd. s = b - b, vì ở 2 trường hợp tiếp theo ta có dạng (... - a) - a <= d <= b -> x1 = a, x2 = d. Độ lớn đoạn chung là d-a - b <= d -> x1 = a, x2 = b. Độ lớn đoạn chung là b-a Ta thấy rằng trong cả 3 trường hợp nhỏ thì độ dài đoạn chung có dạng e-a, với e = a khi d <= a, e = d khi a <= d <= b, và e = b khi b <= d. Tức tùy thuộc vào vị trí của d so với đoạn (a; b) mà ta có e = a, e = d hay e = b. 3 trường hợp trên chính là 3 trường hợp: - a là điểm giữa trong 3 điểm a, b, d -> e = a - d là điểm giữa trong 3 điểm a, b, d -> e = d - b là điểm giữa trong 3 điểm a, b, d -> e = b. Khái niệm điểm giữa này làm ta liên tưởng tới MEDIAN. - a là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = a - d là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = d - b là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = b. Tức ta luôn có s = MEDIAN(a; b; d)-a B. a <= c <= b - d <= b -> x1 = c, x2 = d. Độ lớn đoạn chung là d-c - b <= d -> x1 = c, x2 = b. Độ lớn đoạn chung là b-c. Tức - d là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = d. s = d-c = MEDIAN(a; b; d) - c - b là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = b. s = b-c = MEDIAN(a; b; d) - c Tức ta luôn có s = MEDIAN(a; b; d) - c C. b <= c. Trong trường hợp này s = 0. Rõ ràng b là điểm giữa trong 3 điểm a, b, d -> MEDIAN(a; b; d) = b. Vậy s = 0 = b - b = MEDIAN(a; b; d)-b Tổng kết: A. c <= a <=> a là điểm giữa trong 3 điểm a; b; c <=> MEDIAN(a; b; c) = a. Ta có s = MEDIAN(a; b; d)-a = MEDIAN(a; b; d) - MEDIAN(a; b; c) B. a <= c <= b <=> c là điểm giữa trong 3 điểm a; b; c <=> MEDIAN(a; b; c) = c Ta có s = MEDIAN(a; b; d) - c = MEDIAN(a; b; d) - MEDIAN(a; b; c) C. b <= c <=> b là điểm giữa trong 3 điểm a, b, c <=> MEDIAN(a; b; c) = b Ta có s = MEDIAN(a; b; d)-b = MEDIAN(a; b; d) - MEDIAN(a; b; c) Vậy ta luôn có s = MEDIAN(a; b; d) - MEDIAN(a; b; c) Do vai trò của 2 đoạn (a; b) và (c; d) như nhau nên công thức sau cũng đúng - đổi vai trò của (a; b) và (c; d) với nhau: s = MEDIAN(c; d; b) - MEDIAN(c; d; a) ------------ Công thức luôn đúng với a, b, c và d là các điểm chính xác tuần tự trên trục số. Khi làm bài trong Excel thì ta lại cho a, b, c hoặc d những giá trị không đúng với tuần tự trên trục số. Vì thế đôi lúc phải chỉnh sửa công thức. Tôi cho ví dụ. 1. Các thời điểm a, b, c, d đều trong cùng ngày. Trong trường hợp này các điểm a, b, c và d đều nằm đúng vị trí tương quan lẫn nhau trên trục số và cứ dùng công thức trên mà xử lý. Vd. cho trường hợp này là các ca 6-14 và 14-22 và không có tăng ca "lẹm" sang ngày khác. 2. Thời điểm c và d khác ngày với ca 22-6. Thậm chí các điểm a, b, c hoặc d không cùng ngày với cả 6-14 và 14-22 nhưng có tăng ca. Tại sao trong trường hợp này không dùng được công thức y hệt như trên mà phải biến tấu, chỉnh sửa? Lý do là các điểm a, b, c và d không được cho với trình tự như cần phải có trên trục số. Nếu ca 3 được cho dưới dạng 22-30 và cả ngày làm thực vd. là 21-32 thì cứ công thức ở trên mà xử lý vì các điểm 22, 30 và 21, 32 đều đúng với vị trí cần có trên trục số. Nhưng trong Excel ta lại nhập thành 22-6 và 21-8 nên điểm b và điểm d không nằm đúng vị trí cần có trên trục số. Vì thế không thể dùng công thức y hệt ở trên. Cần phải chỉnh sửa và biến tấu đi. Nhấp chuột vào đây để mở rộng...Da vậy là em hiểu được đoạn đầu rồi ạ. Nhưng đoạn (Giờ vào>Giờ ra)*16 em vẫn chưa hiểu được ý tưởng của anh ạ. Em hiểu 16 là khoảng cách từ 6:00 đến 22:00 nhưng vẫn ko hiểu cách suy luận để lồng vào ạ. Em rất rất cảm ơn anh batman đã tận tình giải thích ạ. B
batman1
Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768th_dungdn đã viết: Da vậy là em hiểu được đoạn đầu rồi ạ. Nhưng đoạn (Giờ vào>Giờ ra)*16 em vẫn chưa hiểu được ý tưởng của anh ạ. Em hiểu 16 là khoảng cách từ 6:00 đến 22:00 nhưng vẫn ko hiểu cách suy luận để lồng vào ạ. Em rất rất cảm ơn anh batman đã tận tình giải thích ạ. Nhấp chuột vào đây để mở rộng...Một khi bạn chỉ nhập thời gian mà không nhập ngày thì phải có ý ngầm hiểu là nhân viên không làm quá 24 giờ liên tục. Vì ngược lại thì sẽ luôn có tình trạng không xác định. Vẫn biết là ca 3 là 22-6 nhưng nếu giờ vào ra tuần tự là 23, 5 thì giờ làm thực là bao nhiêu? Là 6? Là 30 (từ 23 giờ ngày x tới 5 giờ ngày x+2)? Vì thế nếu chỉ nhập giờ thì phải ngầm hiểu là nhân viên chỉ làm liên tục < 24 giờ. Với "ngầm hiểu" kia thì khi tính cho ca 3 bạn chỉ việc nhập C2, D2 thôi. Cần gì hiểu công thức? Cứ nhập dữ liệu là sẽ có kết quả, làm được việc. Cần gì phải hiểu tại sao 16 tại sao 6, 22, 24? Công thức tính cho ca 3, cứ tính cho ca 3 là dùng nó. Có phải biến tấu gì đâu mà cần phải hiểu? Người ta chỉ cần phải hiểu khi trong tương lai sẽ phải biến tấu công thức. Đằng này công thức là bất di bất dich cho ca 3. Công thức tính cho ca đêm thì như tôi đã viết thì phải chỉnh sửa công thức mà tôi diễn giải. Lý do thì tôi cũng đã viết rõ. Nếu mỗi công thức tôi lại phải giải thích cho bạn hiểu thì chết mất. Thôi thì bạn dùng được thì dùng, không dùng được thì bỏ. T
th_dungdn
Thành viên mới
Tham gia 14/5/12 Bài viết 21 Được thích 1batman1 đã viết: Một khi bạn chỉ nhập thời gian mà không nhập ngày thì phải có ý ngầm hiểu là nhân viên không làm quá 24 giờ liên tục. Vì ngược lại thì sẽ luôn có tình trạng không xác định. Vẫn biết là ca 3 là 22-6 nhưng nếu giờ vào ra tuần tự là 23, 5 thì giờ làm thực là bao nhiêu? Là 6? Là 30 (từ 23 giờ ngày x tới 5 giờ ngày x+2)? Vì thế nếu chỉ nhập giờ thì phải ngầm hiểu là nhân viên chỉ làm liên tục < 24 giờ. Với "ngầm hiểu" kia thì khi tính cho ca 3 bạn chỉ việc nhập C2, D2 thôi. Cần gì hiểu công thức? Cứ nhập dữ liệu là sẽ có kết quả, làm được việc. Cần gì phải hiểu tại sao 16 tại sao 6, 22, 24? Công thức tính cho ca 3, cứ tính cho ca 3 là dùng nó. Có phải biến tấu gì đâu mà cần phải hiểu? Người ta chỉ cần phải hiểu khi trong tương lai sẽ phải biến tấu công thức. Đằng này công thức là bất di bất dich cho ca 3. Công thức tính cho ca đêm thì như tôi đã viết thì phải chỉnh sửa công thức mà tôi diễn giải. Lý do thì tôi cũng đã viết rõ. Nếu mỗi công thức tôi lại phải giải thích cho bạn hiểu thì chết mất. Thôi thì bạn dùng được thì dùng, không dùng được thì bỏ. Nhấp chuột vào đây để mở rộng...Công thức hay vậy phải dùng chứ sao bỏ được bác batman. Chỉ là em muốn học hỏi, rèn luyện cách suy nghĩ để được như bác thôi mà. Em đang thần tượng bác ngời ngời mà bác nói vậy em buồn quá ( P
ppc0312
whom?
Tham gia 2/4/08 Bài viết 623 Được thích 319th_dungdn đã viết: Công thức hay vậy phải dùng chứ sao bỏ được bác batman. Chỉ là em muốn học hỏi, rèn luyện cách suy nghĩ để được như bác thôi mà. Em đang thần tượng bác ngời ngời mà bác nói vậy em buồn quá ( Nhấp chuột vào đây để mở rộng...Buồn gì, trước khi hỏi thì phải đào sâu suy nghĩ, thắc mắc đâu, muốn hỏi lại thì nên trình bày lại sự hiểu biết của mình về vấn đề (công thức đó) rồi mới nhờ người khác giúp chỗ vướng đó. Đâu phải chỉ trông chờ người ta giải thích a-z , trực sẵn được (trừ khi ta là vua) B
batman1
Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768th_dungdn đã viết: Công thức hay vậy phải dùng chứ sao bỏ được bác batman. Chỉ là em muốn học hỏi, rèn luyện cách suy nghĩ để được như bác thôi mà. Em đang thần tượng bác ngời ngời mà bác nói vậy em buồn quá ( Nhấp chuột vào đây để mở rộng...Thôi được. chỉ 1 lần này nữa thôi. Tôi diễn giải công thức cho giờ làm ca đêm. Nhắc lại: 1. công thức cho giờ làm ca ̣a-b với giờ vào giờ ra c-d, thỏa điều kiện a, b, c và d đều cùng ngày là s = MEDIAN(a; b; d) - MEDIAN(a; b; c) 2. Vì a, b, c và d cho dưới dạng thời gian không có ngày (không cho ngày) nên phải hiểu ngầm là khoảng cách giữa thời điểm c và thời điểm d trên trục thời gian phải < 1 (1 ngày = 24 tiếng được Excel lưu bằng giá trị 1). Ngược lại thì kết quả không xác định được. --------------- Ta dẫn giải công thức cho thời gian làm ca đêm. Ta xét 2 trường hợp. 1. Thời điểm bắt đầu làm C2 và thời điểm kết thúc D2 trong cùng ngày. Dễ thấy là nếu trong khoảng từ C2 tới D2 ta tô mầu xanh cho các đoạn rơi vào ca đêm (00:00:00 - 06:00:00 và 22:00:00 - 24:00:00) và tô mầu đỏ cho đoạn rơi vào ca ngày (06:00:00 - 22:00:00) thì tổng các đoạn mầu xanh và mầu đỏ có độ dài = D2-C2. Tức s + s1 = D2-C2 (s1 là khoảng thời gian rơi vào ca ngày 06:00:00 - 22:00:00 được tô mầu đỏ) => s = D2-C2-s1 = D2-C2-(MEDIAN("06:00:00"; "22:00:00"; D2) - MEDIAN("06:00:00"; "22:00:00"; C2)) => s = D2 - C2 - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) ' (A) Do thời điểm C2 và D2 cùng ngày nên D2 > C2, và D2 - C2 = MOD(D2-C2; 1) s = MOD(D2-C2; 1) - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) 2. Thời điểm bắt đầu làm C2 và thời điểm kết thúc D2 ở 2 ngày liên tiếp. Ta chia đoạn (C2; D2) thành 2 đoạn (C2; "24:00:00") và (00:00:00-D2) Ta có s = <ca đêm đoạn 1> + <ca đêm đoạn 2> Ta dùng công thức (A) ở điểm 1 cho từng đoạn. <ca đêm đoạn 1> = "24:00:00" - C2 - MEDIAN("06:00:00"; "22:00:00"; "24:00:00") + MEDIAN("06:00:00"; "22:00:00"; C2) <ca đêm đoạn 1> = 1 - C2 - "22:00:00" + MEDIAN("06:00:00"; "22:00:00"; C2) <ca đêm đoạn 2> = D2 - "00:00:00" - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; "00:00:00") <ca đêm đoạn 2> = D2 - MEDIAN("06:00:00"; "22:00:00"; D2) + "06:00:00" s = <ca đêm đoạn 1> + <ca đêm đoạn 2> s = 1 - C2 - "22:00:00" + MEDIAN("06:00:00"; "22:00:00"; C2) + D2 - MEDIAN("06:00:00"; "22:00:00"; D2) + "06:00:00" s = 1 + D2 - C2 - "16:00:00" - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) ---------- Do có giả thiết ngầm là thời gian làm việc liên tục < 1 ngày nên C2 < D2 nếu thời điểm C2 và D2 cùng ngày, và C2 > D2 nếu thời điểm C2 và D2 ở 2 ngày liên tiếp. Do (C2>D2) trả về 0 (FALSE) cho thời điểm C2 và thời điểm D2 cùng ngày, và trả về 1 (TRUE) cho thời điểm C2 và thời điểm D2 ở 2 ngày khác nhau nên công thức cho trường hợp 1 và 2 có thể viết lại thành: 1. s = MOD(D2-C2; 1) - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) - (C2>D2)*16/24 * 2. s = 1 + D2 - C2 - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) - (C2>D2)*16/24 Dễ thấy là với C2 > D2 (C2 và D2 ở 2 ngày liên tiếp) thì 1 + D2 - C2 = MOD(D2-C2; 1). Vậy s = MOD(D2-C2; 1) - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) - (C2>D2)*16/24 ** Từ * và ** ta thấy là giờ làm ca đêm s luôn là: s = MOD(D2-C2; 1) - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) - (C2>D2)*16/24 Công thức trên chính là công thức đầu tiên tôi cho bạn. Kết quả sẽ là như Excel lưu thời gian. Vd. "08:00:00" sẽ được lưu bằng số 0,33...33 (1/3) do 1 ngày = 24 giờ được lưu bằng số 1). Do bạn muốn kết quả bằng số kiểu 8 tiếng thì kết quả là 8 chứ không là 0,33...33 nên để có kết quả theo kiểu của bạn thì phải nhân kết quả ở trên với 24. Kết quả nhân với 24 chính là công thức thứ 2 mà tôi cho bạn. -------------- Lưu ý: công thức của tôi và của bạn HieuCD sẽ cho kết quả khác nhau ở một số trường hợp. Vd. giờ vào là "05:00:00" và giờ ra là "01:00:00" thì công thức của tôi trả về 4 (1 giờ từ "05:00:00" tới "06:00:00" của ngày bắt đầu và 3 giờ từ "22:00:00" tới "01:00:00" của ngày tiếp theo). Còn công thức của bạn HieuCD trả về 3. T
th_dungdn
Thành viên mới
Tham gia 14/5/12 Bài viết 21 Được thích 1batman1 đã viết: Thôi được. chỉ 1 lần này nữa thôi. Tôi diễn giải công thức cho giờ làm ca đêm. Nhắc lại: 1. công thức cho giờ làm ca ̣a-b với giờ vào giờ ra c-d, thỏa điều kiện a, b, c và d đều cùng ngày là s = MEDIAN(a; b; d) - MEDIAN(a; b; c) 2. Vì a, b, c và d cho dưới dạng thời gian không có ngày (không cho ngày) nên phải hiểu ngầm là khoảng cách giữa thời điểm c và thời điểm d trên trục thời gian phải < 1 (1 ngày = 24 tiếng được Excel lưu bằng giá trị 1). Ngược lại thì kết quả không xác định được. --------------- Ta dẫn giải công thức cho thời gian làm ca đêm. Ta xét 2 trường hợp. 1. Thời điểm bắt đầu làm C2 và thời điểm kết thúc D2 trong cùng ngày. Dễ thấy là nếu trong khoảng từ C2 tới D2 ta tô mầu xanh cho các đoạn rơi vào ca đêm (00:00:00 - 06:00:00 và 22:00:00 - 24:00:00) và tô mầu đỏ cho đoạn rơi vào ca ngày (06:00:00 - 22:00:00) thì tổng các đoạn mầu xanh và mầu đỏ có độ dài = D2-C2. Tức s + s1 = D2-C2 (s1 là khoảng thời gian rơi vào ca ngày 06:00:00 - 22:00:00 được tô mầu đỏ) => s = D2-C2-s1 = D2-C2-(MEDIAN("06:00:00"; "22:00:00"; D2) - MEDIAN("06:00:00"; "22:00:00"; C2)) => s = D2 - C2 - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) ' (A) Do thời điểm C2 và D2 cùng ngày nên D2 > C2, và D2 - C2 = MOD(D2-C2; 1) s = MOD(D2-C2; 1) - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) 2. Thời điểm bắt đầu làm C2 và thời điểm kết thúc D2 ở 2 ngày liên tiếp. Ta chia đoạn (C2; D2) thành 2 đoạn (C2; "24:00:00") và (00:00:00-D2) Ta có s = <ca đêm đoạn 1> + <ca đêm đoạn 2> Ta dùng công thức (A) ở điểm 1 cho từng đoạn. <ca đêm đoạn 1> = "24:00:00" - C2 - MEDIAN("06:00:00"; "22:00:00"; "24:00:00") + MEDIAN("06:00:00"; "22:00:00"; C2) <ca đêm đoạn 1> = 1 - C2 - "22:00:00" + MEDIAN("06:00:00"; "22:00:00"; C2) <ca đêm đoạn 2> = D2 - "00:00:00" - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; "00:00:00") <ca đêm đoạn 2> = D2 - MEDIAN("06:00:00"; "22:00:00"; D2) + "06:00:00" s = <ca đêm đoạn 1> + <ca đêm đoạn 2> s = 1 - C2 - "22:00:00" + MEDIAN("06:00:00"; "22:00:00"; C2) + D2 - MEDIAN("06:00:00"; "22:00:00"; D2) + "06:00:00" s = 1 + D2 - C2 - "16:00:00" - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) ---------- Do có giả thiết ngầm là thời gian làm việc liên tục < 1 ngày nên C2 < D2 nếu thời điểm C2 và D2 cùng ngày, và C2 > D2 nếu thời điểm C2 và D2 ở 2 ngày liên tiếp. Do (C2>D2) trả về 0 (FALSE) cho thời điểm C2 và thời điểm D2 cùng ngày, và trả về 1 (TRUE) cho thời điểm C2 và thời điểm D2 ở 2 ngày khác nhau nên công thức cho trường hợp 1 và 2 có thể viết lại thành: 1. s = MOD(D2-C2; 1) - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) - (C2>D2)*16/24 * 2. s = 1 + D2 - C2 - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) - (C2>D2)*16/24 Dễ thấy là với C2 > D2 (C2 và D2 ở 2 ngày liên tiếp) thì 1 + D2 - C2 = MOD(D2-C2; 1). Vậy s = MOD(D2-C2; 1) - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) - (C2>D2)*16/24 ** Từ * và ** ta thấy là giờ làm ca đêm s luôn là: s = MOD(D2-C2; 1) - MEDIAN("06:00:00"; "22:00:00"; D2) + MEDIAN("06:00:00"; "22:00:00"; C2) - (C2>D2)*16/24 Công thức trên chính là công thức đầu tiên tôi cho bạn. Kết quả sẽ là như Excel lưu thời gian. Vd. "08:00:00" sẽ được lưu bằng số 0,33...33 (1/3) do 1 ngày = 24 giờ được lưu bằng số 1). Do bạn muốn kết quả bằng số kiểu 8 tiếng thì kết quả là 8 chứ không là 0,33...33 nên để có kết quả theo kiểu của bạn thì phải nhân kết quả ở trên với 24. Kết quả nhân với 24 chính là công thức thứ 2 mà tôi cho bạn. -------------- Lưu ý: công thức của tôi và của bạn HieuCD sẽ cho kết quả khác nhau ở một số trường hợp. Vd. giờ vào là "05:00:00" và giờ ra là "01:00:00" thì công thức của tôi trả về 4 (1 giờ từ "05:00:00" tới "06:00:00" của ngày bắt đầu và 3 giờ từ "22:00:00" tới "01:00:00" của ngày tiếp theo). Còn công thức của bạn HieuCD trả về 3. Nhấp chuột vào đây để mở rộng...Hồi đi học có phải bác học chuyên toán không bác? Thật ra em suy nghĩ công thức cả tuần rồi mới đăng đàn để hỏi. E cũng có lập công thức nhưng chủ yếu là dùng hàm if. Suy luận cũng kiểu nếu giờ ra và giờ vào cùng một ngày thì công thức như thế nào, nếu 2 giờ thuộc 2 ngày khác nhau thì sẽ chia ra 2 đoạn y như bác giải thích suy luận của bác ở trên. Em cũng có suy nghĩ là nếu giờ vào giờ ra rơi vào khung giờ ca đêm hoặc không rơi vào khung giờ ca đêm, nhưng thật sự là em không hề nghĩ được cái zụ đoạn chung như hướng suy nghĩ của bác, cũng hoàn toàn không biết đến hàn median cũng như ứng dụng của hàm này. Trước khi đăng đàn, em có dùng công thức if nhưng kết quả không đúng cho tất cả các trường hợp, công thức của em vừa dài vừa dở nên em ngại ko để vào file. Lần sau em xin rút kinh nghiệm, phải đưa trước hướng suy nghĩ của em để xin thêm ý kiến từ mọi người. Một lần nữa em xin cảm ơn bác Batman1 và bác HieuCD đã tận tình chỉ vẽ cho em. Chúc mọi người sức khoẻ và thành công ạ. Chúc cho diễn đàn của mình càng ngày càng hay và nhiều view. Nghi B
batman1
Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,774 Được thích 9,768th_dungdn đã viết: Hồi đi học có phải bác học chuyên toán không bác? Nhấp chuột vào đây để mở rộng...Tôi không bao giờ học chuyên toán nhưng cả đời đi học không bao giờ có vấn đề về Toán, Lý và Hóa. T
th_dungdn
Thành viên mới
Tham gia 14/5/12 Bài viết 21 Được thích 1batman1 đã viết: Tôi không bao giờ học chuyên toán nhưng cả đời đi học không bao giờ có vấn đề về Toán, Lý và Hóa. Nhấp chuột vào đây để mở rộng...Dạ. Hihiii. H
HUONG MINJI
Thành viên mới
Tham gia 10/10/21 Bài viết 0 Được thích 0 Em muốn hỏi các anh chị cách tính cụ thể hơn nữa. Vì công ty em ca làm phụ thuộc vào đơn đặt hàng của khách nên cũng k có ca cụ thể, nh sếp em thì lại muốn tính lương chuẩn. giờ làm đêm theo luật sẽ được tính từ 22h-6h sáng ngày hôm sau. nhưng ví dụ như nhà em có ca dở dang ntn: làm từ 20h - 7h sáng hsau. Tổng thời gian làm việc là 11h, có 8h làm việc chính thức và 3h làm thêm. Nhưng trong 8h làm việc chính thức thì sẽ có 2h thuộc giờ làm việc ngày, 6h thuộc giờ làm việc đêm. Tương tự giờ làm thêm sẽ có 2h làm thêm trong khung giờ đêm, và 1h làm thêm giờ ngày ( vì làm ngày sẽ tính lương 100%, còn làm thêm ngày sẽ tính 150%. còn làm đêm sẽ tính lương 130%, còn làm thêm đêm là 180%). anh chị chỉ giúp em với ạ, anh chị xem giúp em như bảng em tính thủ công dưới ạFile đính kèm
- THẮC MẮC EXCEL TÍNH GIỜ CHẤM CÔNG.xlsx 10.2 KB · Đọc: 42
Bài viết mới nhất
A Nhờ xử lý tính toán Số nằm trong chuỗi kí tự- acrox84
- Chủ nhật lúc 10:48
- Xử lý chuỗi ký tự
- Question
- Thanh Binh111
- Hôm qua, lúc 16:40
- Lập Trình với Excel
- Question
- vuasutu08
- Hôm qua, lúc 16:03
- Lập Trình với Excel
- Question
- ductoan.0703
- Thứ tư lúc 14:49
- Lập Trình với Excel
- likosin
- Hôm qua, lúc 08:59
- Giải thích, gỡ rối, xử lý lỗi công thức
- likosin
- Hôm qua, lúc 09:53
- Lọc và sắp xếp dữ liệu
- Cuong001
- Thứ năm lúc 09:28
- Hỏi đáp những vấn đề khác
- Question
- ongke0711
- 6/10/24
- Lập Trình với Excel
- Đã giải quyết
- HeSanbi
- 18/4/21
- Lập Trình với Excel
- Huy@@*
- Thứ tư lúc 09:05
- Những vấn đề chung
- hieuchi89
- 28/8/24
- Hàm và công thức Excel
- pqdowntailieu3
- Thứ năm lúc 16:59
- Google Spreadsheets
- OverAC
- Thứ năm lúc 22:13
- Thông tin về diễn đàn
- LINHCM
- Chủ nhật lúc 05:56
- Tìm kiếm, dò tìm và tham chiếu
- pqdowntailieu3
- 5/9/24
- Google Spreadsheets
- aduc
- 27/10/13
- Excel và Kỹ Thuật
- martin chen
- Thứ năm lúc 13:23
- Hướng dẫn sử dụng các hàm trong Excel
- tuyennhnobk
- Thứ tư lúc 22:51
- Hàm và công thức Excel
- babyrock2009
- Thứ năm lúc 11:13
- Hàm và công thức Excel
- ngatran08
- Thứ năm lúc 11:17
- Hàm và công thức Excel
Đếm ngược thời gian
000 Ngày 00 Giờ 00 phút 00 giây [GPE] TALK SHOW EXCEL KẾT HỢP VỚI GOOGLE SHEETS: ỨNG DỤNG THỰC TẾ [GPE] TALK SHOW EXCEL KẾT HỢP VỚI GOOGLE SHEETS: ỨNG DỤNG THỰC TẾThành viên có số lượng bài viết cao nhất tháng
- Hoàng Tuấn 868 29
- HeSanbi 26
- LINHCM 25
- ptm0412 22
- hoangtuaotrang_hp_vn 21
- HieuCD 18
- qtm1987 17
- ongke0711 17
- huuthang_bd 16
- SA_DQ 16
- DeTong 15
- hoangminhtien 13
- hvnhpro 13
- HUONGHCKT 12
- BuiQuangThuan 12
- Duy Tùng 9x 10
- Nguyễn Duy Tuân 9
- GPE-Trợ Lý 9
- befaint 8
- SteveNguyen1991 8
Thành viên có điểm tương tác cao nhất tháng
- HieuCD 50
- huuthang_bd 34
- Hoàng Tuấn 868 31
- hoangtuaotrang_hp_vn 28
- hoangminhtien 24
- SA_DQ 24
- HeSanbi 23
- HUONGHCKT 22
- DeTong 22
- ptm0412 21
- GPE-Trợ Lý 20
- ongke0711 15
- befaint 13
- longtay1111 12
- Phuocam 12
- NT Ngoc Yen 12
- Hai Lúa Miền Tây 11
- Nguyễn Duy Tuân 11
- qtm1987 9
- Duy Tùng 9x 8
- Trang chủ
- Thành viên giúp nhau
- Thành viên giúp nhau
- Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Từ khóa » Công Thức Excel Tính Lương Ca đêm
-
Xây Dựng Công Thức Tính Công Ca đêm Từ Dữ Liệu Máy Chấm Công
-
Công Thức Excel: Tính Tiền Làm Thêm Giờ - ExtendOffice
-
File Excel Tính Tiền Làm Thêm Giờ, Làm Ban đêm 2019
-
Cách Tính Lương Tăng Ca, Làm Thêm Giờ Vào Ban đêm Theo Quy định
-
File Excel Và Cách Tính Tiền Lương Làm Ca đêm, Làm Thêm Giờ - Thuế
-
Mẫu Bảng Tính Tiền Lương Làm Thêm Giờ, Làm Thêm Vào Ban đêm ...
-
Hướng Dẫn Làm Bảng Tính Lương Excel Và Cách Sử Dụng Các Hàm ...
-
Hướng Dẫn Tính Lương Làm Thêm Vào Ban đêm, Ngày Lễ Mới Nhất 2019
-
Cách Tính Lương Làm Tăng Ca Thêm Giờ Ngày Lễ 2022 Mới Nhất
-
File Excel Tính Nhanh Tiền Lương Làm Thêm Giờ, Làm Ban đêm 2019
-
Mời Bạn đọc Tải Về File Excel Tính Lương Tăng Ca Làm Thêm Giờ
-
3 Công Thức Tính Giờ Làm Việc đơn Giản Nhất Trong Excel - Unica
-
Cách Làm Bảng Tính Lương Trên Excel Hàng Tháng Năm 2022
-
Cộng Hoặc Trừ Thời Gian - Microsoft Support