Hỏi về tính giờ thực hiện công việc (1 người xem)

Người dùng đang xem chủ đề này

vuhuutho1150cl

Thành viên mới
Tham gia
9/6/10
Bài viết
5
Được thích
0
Em chào anh, chị,
Em đang có bài excel nhờ anh chị hỗ trợ em với ạ
Em đang cần tính thời gian làm việc tại cột Hours =Close Time - Open Time
Điều kiện:
- Thời gian làm việc được tính từ 8h-12h và 13h-17h
- Không bao gồm thời gian nghỉ thứ 7, chủ nhật
- Những yêu cầu open trước 8h thì tính giờ open từ 8:00, những yêu cầu closed sau 17h thì tính giờ closed là 17:00
Em cảm ơn anh, chị!
 

File đính kèm

Em chào anh, chị,
Em đang có bài excel nhờ anh chị hỗ trợ em với ạ
Em đang cần tính thời gian làm việc tại cột Hours =Close Time - Open Time
Điều kiện:
- Thời gian làm việc được tính từ 8h-12h và 13h-17h
- Không bao gồm thời gian nghỉ thứ 7, chủ nhật
- Những yêu cầu open trước 8h thì tính giờ open từ 8:00, những yêu cầu closed sau 17h thì tính giờ closed là 17:00
Em cảm ơn anh, chị!


Bạn dùng CT :
F2=(E2-D2)*24-(INT((E2-D2-WEEKDAY(E2-5,2)+8)/7)+INT((E2-D2-WEEKDAY(E2-6,2)+8)/7))*24-IF(HOUR(E2)-17<0,0,HOUR(E2)-17)+IF(8-(HOUR(D2))<=0,0,8-HOUR(D2))
 
Lần chỉnh sửa cuối:
Bạn dùng CT :
F2=(E2-D2)*24-(INT((E2-D2-WEEKDAY(E2-5,2)+8)/7)+INT((E2-D2-WEEKDAY(E2-6,2)+8)/7))*24-IF(HOUR(E2)-17<0,0,HOUR(E2)-17)+IF(8-(HOUR(D2))<=0,0,8-HOUR(D2))
Công thức trên nếu ngày bắt đầu hoặc ngày kết thúc rơi vào ngày nghỉ ( thứ 7, chủ nhật) thì cho ra kết quả chưa chính xác. Cái này phải xét đến trường hợp ngày bắt đầu, kết thúc có rơi vào ngày nghỉ hay không nữa nên chắc phải dùng thêm vài hàm if nữa.
 
Bạn dùng CT :
F2=(E2-D2)*24-(INT((E2-D2-WEEKDAY(E2-5,2)+8)/7)+INT((E2-D2-WEEKDAY(E2-6,2)+8)/7))*24-IF(HOUR(E2)-17<0,0,HOUR(E2)-17)+IF(8-(HOUR(D2))<=0,0,8-HOUR(D2))
ý của em chỉ muốn tính số giờ thực hiện trong thời gian làm việc thôi
Ví dụ: Opentime 13/10/2016 09:00, Closed 13/10/2016 17:45 thì kết quả là: 7h
 
Công thức trên nếu ngày bắt đầu hoặc ngày kết thúc rơi vào ngày nghỉ ( thứ 7, chủ nhật) thì cho ra kết quả chưa chính xác. Cái này phải xét đến trường hợp ngày bắt đầu, kết thúc có rơi vào ngày nghỉ hay không nữa nên chắc phải dùng thêm vài hàm if nữa.
trường hợp nầy tính được kết quả đúng cho mọi trường hợp thì công thức rất phức tạp, sử dụng hàng loạt IF xét đầu xét giửa xét cuối
 
ý của em chỉ muốn tính số giờ thực hiện trong thời gian làm việc thôi
Ví dụ: Opentime 13/10/2016 09:00, Closed 13/10/2016 17:45 thì kết quả là: 7h
Chào vuhuutho1150cl,

Đúng như lời bạn HieuCD nói:
trường hợp nầy tính được kết quả đúng cho mọi trường hợp thì công thức rất phức tạp, sử dụng hàng loạt IF xét đầu xét gia xét cuối

Bạn chịu khó xem file đính kèm, cùng chịu khó tìm hiểu các công thức, hơi lằng nhằng chút nhưng đã tính đủ các trường hợp xãy ra. !$@!!!$@!!!$@!!

...Cùng chịu khó test thử các ngày, giờ khác để xem kết quả đúng ý bạn chưa nha. --=0

Chúc các bạn ngày thiệt vui /-*+//-*+//-*+/
 

File đính kèm

Chào vuhuutho1150cl,

Đúng như lời bạn HieuCD nói:


Bạn chịu khó xem file đính kèm, cùng chịu khó tìm hiểu các công thức, hơi lằng nhằng chút nhưng đã tính đủ các trường hợp xãy ra. !$@!!!$@!!!$@!!

...Cùng chịu khó test thử các ngày, giờ khác để xem kết quả đúng ý bạn chưa nha. --=0

Chúc các bạn ngày thiệt vui /-*+//-*+//-*+/
mình cứ nghĩ không thể dùng công thức để tính bài toán nầy, không ngờ lại làm được, công thức quá dữ, đọc hoa cả mắt
chúc bạn một tối thật vui
 
Em chào anh, chị,
Em đang có bài excel nhờ anh chị hỗ trợ em với ạ
Em đang cần tính thời gian làm việc tại cột Hours =Close Time - Open Time
Điều kiện:
- Thời gian làm việc được tính từ 8h-12h và 13h-17h
- Không bao gồm thời gian nghỉ thứ 7, chủ nhật
- Những yêu cầu open trước 8h thì tính giờ open từ 8:00, những yêu cầu closed sau 17h thì tính giờ closed là 17:00
Em cảm ơn anh, chị!
Bạn dùng CT này ở F2:
Mã:
=((INT(E2)-INT(D2)+1)-SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(INT(D2)&":"&INT(E2))),2)>5)))*8-(MIN(MAX(MOD(D2,1)*24-8,0),4)+MIN(MAX(MOD(D2,1)*24-13,0),4)+MIN(MAX(17-MOD(E2,1)*24,0),4)+MIN(MAX(12-MOD(E2,1)*24,0),4))
Fill xuống!!!
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn dùng CT này ở F2:
Mã:
=((INT(E2)-INT(D2)+1)-SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(INT(D2)&":"&INT(E2))),2)>5)))*8-(MIN(MAX(MOD(D2,1)*24-8,0),4)+MIN(MAX(MOD(D2,1)*24-12,0),4)+MIN(MAX(17-MOD(E2,1)*24,0),4)+MIN(MAX(12-MOD(E2,1)*24,0),4))
Fill xuống!!!
lại thêm một bất ngờ nữa, 9 hàm loại hàm kết hợp với nhau, không tưởng tượng nổi, đúng là Leoheocon
chúc bạn một đêm ngon giấc, mơ thấy các công thức với vũ khúc nghê thường
 
Bạn dùng CT này ở F2:
Mã:
=((INT(E2)-INT(D2)+1)-SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(INT(D2)&":"&INT(E2))),2)>5)))*8-(MIN(MAX(MOD(D2,1)*24-8,0),4)+MIN(MAX(MOD(D2,1)*24-12,0),4)+MIN(MAX(17-MOD(E2,1)*24,0),4)+MIN(MAX(12-MOD(E2,1)*24,0),4))
Fill xuống!!!
Công thức của bạn hình như cũng chưa đúng: Nếu nhập open 8:00, close 17:00 trong cùng 1 ngày thì kết quả chỉ là 8 giờ, nếu đúng phải là 17-8=9 giờ.
Một bài tưởng chừng như đơn giản mà hóa ra rất phức tạp. Mình cũng chưa làm được.
 
Công thức của bạn hình như cũng chưa đúng: Nếu nhập open 8:00, close 17:00 trong cùng 1 ngày thì kết quả chỉ là 8 giờ, nếu đúng phải là 17-8=9 giờ.
Một bài tưởng chừng như đơn giản mà hóa ra rất phức tạp. Mình cũng chưa làm được.
Nghĩ giữa giờ 1 tiếng nữa mà bạn, nếu không có nghĩ giữa giờ CT còn đơn giản hơn nữa!!!%#^#$%#^#$%#^#$
 
Lần chỉnh sửa cuối:
lại thêm một bất ngờ nữa, 9 hàm loại hàm kết hợp với nhau, không tưởng tượng nổi, đúng là Leoheocon
chúc bạn một đêm ngon giấc, mơ thấy các công thức với vũ khúc nghê thường
Chào HieuCD,

"Leoheocon" hay "Lenongree" thì nickname này cũng gây "sóng gió" cho anh em GPE. Khi nào mà HieuCD không thấy tên của người em này lên GPE mới là điều không tưởng tượng nổi! }}}}}}}}}}}}}}}

Hôm nay mới thấy HieuCD "thêm lời văn hoa" cho leoheocon mình thấy "ganh tị" đó nha!
Khà khà! chọc HieuCD cho vui.
 
Nghĩ giữa giờ 1 tiếng nữa mà bạn, nếu không có nghĩ giữa giờ CT còn đơn giản hơn nữa!!!%#^#$%#^#$%#^#$
Chào em trai!

CT khúc đầu thì thay cho Networkdays.Intl() để phiên bản nào của excel cũng sử dụng được.

Khúc sau em chặn các mốc giờ: giờ đầu: "8, 12" / giờ cuối "17, 12" hay quá! đơn giản chỉ với Min(Max(),4).

HieuCD khen em tư duy tốt, chí lý!

}}}}}}}}}}}}}}}
 
Chào HieuCD,

"Leoheocon" hay "Lenongree" thì nickname này cũng gây "sóng gió" cho anh em GPE. Khi nào mà HieuCD không thấy tên của người em này lên GPE mới là điều không tưởng tượng nổi! }}}}}}}}}}}}}}}

Hôm nay mới thấy HieuCD "thêm lời văn hoa" cho leoheocon mình thấy "ganh tị" đó nha!
Khà khà! chọc HieuCD cho vui.
Leoheocon là tương lai của đất nước Việt Nam phải ưu tiên, còn tụi mình xế bóng chiều tà "ganh tị" làm gì với lớp trẻ, không gì bằng tận hưởng thú vui điền viên, sung sướng nhìn lớp trẻ có chí tiến thủ, ngày càng giỏi và thành công hơn mình
 
mất mấy tiếng mới viết xong hàm tự tạo tính thời gian, các bạn kiểm tra lại dùm
 

File đính kèm

Chào em trai!

CT khúc đầu thì thay cho Networkdays.Intl() để phiên bản nào của excel cũng sử dụng được.

Khúc sau em chặn các mốc giờ: giờ đầu: "8, 12" / giờ cuối "17, 12" hay quá! đơn giản chỉ với Min(Max(),4).

HieuCD khen em tư duy tốt, chí lý!

}}}}}}}}}}}}}}}
Leoheocon là tương lai của đất nước Việt Nam phải ưu tiên, còn tụi mình xế bóng chiều tà "ganh tị" làm gì với lớp trẻ, không gì bằng tận hưởng thú vui điền viên, sung sướng nhìn lớp trẻ có chí tiến thủ, ngày càng giỏi và thành công hơn mình
Cám ơn hai anh!!!--=0--=0%#^#$%#^#$!$@!!!$@!!!!!
 
mất mấy tiếng mới viết xong hàm tự tạo tính thời gian, các bạn kiểm tra lại dùm
Chào HieuCD,

Bạn vuhuutho1150cl thật sướng, có cả công thức hay của leoheocon, lại thêm UDF của HieuCD thì còn đòi hỏi gì hơn.

Đã kiểm tra những lắt léo trong giờ, vd: D3= 23/09/2016 05:50:00 PM; E3=26/09/2016 07:00:00 AM kết quả =0, chứng minh UDF của bạn không phải "Vẫn chạy tốt" mà là "Chạy quá tốt". --=0

Nhấn Alt+F11 vào nhìn code mới thấy bạn bỏ tâm huyết vào thực hiện cho hoàn thành chủ đề.

Cảm ơn HieuCD.

Cảm ơn các anh em nhiều lắm. }}}}}}}}}}}}}}}
 
Cảm ơn các anh rất nhiều ạ :)
Thật sự quá tuyệt vời!!! @#!^%
 

File đính kèm

tinh chỉnh lại hàm GioLV để nhập liệu tương đối thoải mái
 

File đính kèm

Bài viết mới nhất

Back
Top Bottom