Yêu cầu quá hay.Chào cả nhà,
Cả nhà có thể giúp em thiết lập công thức cho cột "TG gián đoạn" không ah.
View attachment 238259
Thank cả nhà nhiều.
D11=ROUND(SUM((IF((MOD(C11,1)>{"11:30";"17:00"}+0)*(MOD(C11,1)<{"13:00";"7:30"}+{0;1}),MOD(C11,1),{"13:00";"7:30"}+{0;1})-IF(MOD(B11,1)>{"11:30";"17:00"}+0,MOD(B11,1),{"11:30";"17:00"}+0))*(MOD(C11,1)>{"11:30";"17:00"}+0)*(MOD(B11,1)<{"13:00";"7:30"}+{0;1})*1440)+(INT(C11)-INT(B11))*960,0)
Làm thử,:
D11=ROUND(SUM((IF((MOD(C11,1)>{"11:30";"17:00"}+0)*(MOD(C11,1)<{"13:00";"7:30"}+{0;1}),MOD(C11,1),{"13:00";"7:30"}+{0;1})-IF(MOD(B11,1)>{"11:30";"17:00"}+0,MOD(B11,1),{"11:30";"17:00"}+0))*(MOD(C11,1)>{"11:30";"17:00"}+0)*(MOD(B11,1)<{"13:00";"7:30"}+{0;1})*1440)+(INT(C11)-INT(B11))*960,0)
gửi bạn nhé. thay vì đi tìm thời gian gián đoạn, nó phải kéo dài trong 2 ngày từ (17h hôm trước đến 7h30 sáng hôm sau) gây khó khăn cho tính toán, mình tính luôn thời gian làm việc!
Mình ráp công thức vào thấy kết quả D11 đúng. D12, D13 thì sai á.Làm thử,:
D11=ROUND(SUM((IF((MOD(C11,1)>{"11:30";"17:00"}+0)*(MOD(C11,1)<{"13:00";"7:30"}+{0;1}),MOD(C11,1),{"13:00";"7:30"}+{0;1})-IF(MOD(B11,1)>{"11:30";"17:00"}+0,MOD(B11,1),{"11:30";"17:00"}+0))*(MOD(C11,1)>{"11:30";"17:00"}+0)*(MOD(B11,1)<{"13:00";"7:30"}+{0;1})*1440)+(INT(C11)-INT(B11))*960,0)
Bạn này làm đúng kết quả nè. Công nhận hay thiệt. Rãnh mình sẽ nghiên cứu công thức của bạn, dài thòn luôn.gửi bạn nhé. thay vì đi tìm thời gian gián đoạn, nó phải kéo dài trong 2 ngày từ (17h hôm trước đến 7h30 sáng hôm sau) gây khó khăn cho tính toán, mình tính luôn thời gian làm việc!
Làm thử mà đúng luôn, ghê thật
Bài đã được tự động gộp:
Quá tuyệt bạn ơi! Lúc đầu mình cũng nghĩ nên làm theo cách này nhưng bí logic nên đành phải tách cột. Giờ thì với công thức của bạn mình có được sự lựa chọn tốt thứ hai cùng với sự giúp đỡ của bạn dazkangel.
Cảm ơn so much
Mình ráp công thức vào thấy kết quả D11 đúng. D12, D13 thì sai á.
Bài đã được tự động gộp:
Bạn này làm đúng kết quả nè. Công nhận hay thiệt. Rãnh mình sẽ nghiên cứu công thức của bạn, dài thòn luôn.
Bài đã được tự động gộp:
Công thức của bạn Thiên thần bóng tối bị sai chỗ nào á.
Còn của bạn dh94 thì đúng.
Mình cũng bí logic, mà bí luôn giải thuật. Nghĩ không ra cách giải bài toán của bạn lun á, nhux đầu ghê, hi.
Theo tôi thấy đây là bài toán tính thời gian làm việc, cụ thể như bài của bạn thì thời gian làm việc là:Chào cả nhà,
Cả nhà có thể giúp em thiết lập công thức cho cột "TG gián đoạn" không ah.
View attachment 238259
Thank cả nhà nhiều.
E11=(DATEDIF(B11-1,C11,"d")*8-((MEDIAN(IF(MOD(B11,1)*24<=11.5,{7.5,11.5},{13,17}),MOD(B11,1)*24)-IF(MOD(B11,1)*24<=11.5,7.5,9))+(IF(MOD(C11,1)*24<=11.5,15.5,17)-MEDIAN(IF(MOD(C11,1)*24<=11.5,{7.5,11.5},{13,17}),MOD(C11,1)*24))))*60
Cảm ơn bạn đã chia sẽ, các làm của bạn rất hay. Xem xong mới thấy tư duy của mình còn hạn chế rất nhiều.Theo tôi thấy đây là bài toán tính thời gian làm việc, cụ thể như bài của bạn thì thời gian làm việc là:
Do vậy để tính thời gian gián đoạn, thì chỉ cần lấy thời gian tổng trừ thời gian làm việc (mà bạn ghi là "Thời gian thực hiện") là ra.
- Từ 7:30 AM đến 11:30 AM
- Từ 1:00 PM đến 5:00 PM
Công thức dưới không cần cột phụ để tính toán, bạn thử:
Enter, fill xuống.Mã:E11=(DATEDIF(B11-1,C11,"d")*8-((MEDIAN(IF(MOD(B11,1)*24<=11.5,{7.5,11.5},{13,17}),MOD(B11,1)*24)-IF(MOD(B11,1)*24<=11.5,7.5,9))+(IF(MOD(C11,1)*24<=11.5,15.5,17)-MEDIAN(IF(MOD(C11,1)*24<=11.5,{7.5,11.5},{13,17}),MOD(C11,1)*24))))*60
Xem thêm giải thuật và hướng dẫn công thức tại:
![]()
Tính thời gian xử lý
Nhờ các anh chị giúp đỡ em viết công thức tự động tính thời gian xử lý với ạ. Ví dụ: Thời gian bắt đầu là 05/09/2018 08:35:00, Thời gian kết thúc là 07/09/2018 14:45:20 Tính thời gian xử lý, biết rằng thời gian làm việc của 1 ngày là từ 8h đến 17h30, nghỉ giữa giờ là từ 12:00 đến 13:30 (khoảng...www.giaiphapexcel.com
Thân
Xem giải thích mục '3.Thời gian không tính công lúc ra' theo link trên:Dear bạn Phan Thế Hiệp,
Mình chưa hiểu đoạn code này sao lại có 15.5: (IF(MOD(C11,1)*24<=11.5,15.5,17). Bạn có thể giải thích cho mình hiểu rõ được không?
Cảm ơn,
Phạm Hùng
Có hàm Text với condition thì mấy bài thời gian có vẻ viết ngắn gọn lại được:Chào cả nhà,
Cả nhà có thể giúp em thiết lập công thức cho cột "TG gián đoạn" không ah.
View attachment 238259
Thank cả nhà nhiều.
E11=SUM(MMULT(TEXT(MOD(B11:C11,1)*24-{7.5;11.5;13},"[<0]\0;[<"&{4;0;4}&"];\"&{4;0;4})*60,{-1;1}))+(INT(C11)-INT(B11))*480
Vận dụng TEXT() quá hay!Có hàm Text với condition thì mấy bài thời gian có vẻ viết ngắn gọn lại được:
Mã:E11=SUM(MMULT(TEXT(MOD(B11:C11,1)*24-{7.5;11.5;13},"[<0]\0;[<"&{4;0;4}&"];\"&{4;0;4})*60,{-1;1}))+(INT(C11)-INT(B11))*480
Bài đã được tự động gộp:
Nếu loại trừ ngày thứ 7, CN hoặc/và ngày nghỉ lễ thì cũng...hơi căng há!?Có hàm Text với condition thì mấy bài thời gian có vẻ viết ngắn gọn lại được:
Mã:E11=SUM(MMULT(TEXT(MOD(B11:C11,1)*24-{7.5;11.5;13},"[<0]\0;[<"&{4;0;4}&"];\"&{4;0;4})*60,{-1;1}))+(INT(C11)-INT(B11))*480
Bài đã được tự động gộp:
Start | End |
Friday 29/5/2020 10:39 AM | Sunday 31/5/2020 5:40 PM |
=SUM(FREQUENCY(MOD(ROW(OFFSET($A$1,MOD(B11,1)*1440,,(C11-B11)*1440+1)),1440),{7.5;11.5;13;17}*60)*{0;1;0;1;0})
Thấy cũng bình thường mà , xét thứ 7,CN thì thêm weekday là được:Nếu loại trừ ngày thứ 7, CN hoặc/và ngày nghỉ lễ thì cũng...hơi căng há!?
Có hướng nào 'gọn gọn' không?
Start End Friday 29/5/2020 10:39 AM Sunday 31/5/2020 5:40 PM
Thân
=SUM(MMULT(TEXT(MOD(A1:B1,1)*(WEEKDAY(A1:B1,2)<6)*24-{7.5;11.5;13},"[<0]\0;[<"&{4;0;4}&"];\"&{4;0;4})*60,{-1;1}))+(NETWORKDAYS.INTL(A1,B1,1)-(WEEKDAY(B1,2)<6))*480
=SUM(FREQUENCY(MOD(ROW(OFFSET($A$1,MOD(B11,1)*1440,,(C11-B11)*1440+0.1)),1440),{7.5;11.5;13;17}*60)*{0;1;0;1;0})
=COUNTBLANK(OFFSET(Z1000,1,1,1%,1%))
Kết quả = 4 anh àMọi người test hộ công thức này xem ra kết quả có bất thường không.Mã:=SUM(FREQUENCY(MOD(ROW(OFFSET($A$1,MOD(B11,1)*1440,,(C11-B11)*1440+0.1)),1440),{7.5;11.5;13;17}*60)*{0;1;0;1;0})
Mã:=COUNTBLANK(OFFSET(Z1000,1,1,1%,1%))