Tìm ngày giờ kết thúc dự kiến (2 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài
Tham gia
10/10/17
Bài viết
3,591
Được thích
12,318
Giới tính
Nam
Do trong tuần ngồi không, nên lục lọi bài cũ, thấy bài này: Tính ngày giờ kết thúc công việc (không tính thời gian nghỉ) cũng hay hay, có thể nhiều anh em cần đến, nên đào lại cho những anh em nào yêu thích viết hàm và công thức giải trí, tạo công thức cho vui:

Điều kiện:
- Ngày làm việc: từ thứ 2 đến thứ 7; Chủ nhật và ngày lễ nghỉ việc
- Giờ làm việc 8 tiếng từ: 8h đến 17h (nghỉ giữa buổi từ 12h-13h không tính vào giờ làm)

Yêu cầu:
  1. Ngày giờ bắt đầu: Cần điều chỉnh lại Ngày/Giờ (cột B file kèm), trả kết quả vào cột D "Ngày giờ bắt đầu (điều chỉnh)"
    • Nếu sớm hơn 8h00: chỉnh thành 8h00
    • Nếu rơi vào khung 12h -13h: chỉnh thành 13h
    • Nếu bằng hay quá 17h00: chỉnh thành 8h00 của ngày kế tiếp (không rơi vào ngày Chủ nhật và ngày lễ)
  2. Ngày giờ kết thúc dự kiến: Dựa vào "Thời gian thực hiện (tiếng)" và "Ngày giờ bắt đầu (điều chỉnh)", tính toán và trả kết quả vào cột E "Ngày giờ kết thúc dự kiến "
    • Theo điều kiện như trên đã nêu
  3. Chỉ dùng công thức, tùy ý dùng bất kỳ từ phiên bản 2010 trở đi; Không dùng cột phụ hay Names.
  4. Kết quả mẫu tính tay như cột G và H
Bảng dữ liệu như file đính kèm.

Chúc anh em ngày vui
 

File đính kèm

Lần chỉnh sửa cuối:
Do trong tuần ngồi không, nên lục lọi bài cũ, thấy bài này: Tính ngày giờ kết thúc công việc (không tính thời gian nghỉ) cũng hay hay, có thể nhiều anh em cần đến, nên đào lại cho những anh em nào yêu thích viết hàm và công thức giải trí, tạo công thức cho vui:

Điều kiện:
- Ngày làm việc: từ thứ 2 đến thứ 7; Chủ nhật và ngày lễ nghỉ việc
- Giờ làm việc 8 tiếng từ: 8h đến 17h (nghỉ giữa buổi từ 12h-13h không tính vào giờ làm)

Yêu cầu:
  1. Ngày giờ bắt đầu: Cần điều chỉnh lại Ngày/Giờ (cột B file kèm), trả kết quả vào cột D "Ngày giờ bắt đầu (điều chỉnh)"
    • Nếu sớm hơn 8h00: chỉnh thành 8h00
    • Nếu rơi vào khung 12h -13h: chỉnh thành 13h
    • Nếu quá 17h00: chỉnh thành 8h00 của ngày kế tiếp (không rơi vào ngày Chủ nhật và ngày lễ)
  2. Ngày giờ kết thúc dự kiến: Dựa vào "Thời gian thực hiện (tiếng)" và "Ngày giờ bắt đầu", tính toán và trả kết quả vào cột E "Ngày giờ kết thúc dự kiến "
    • Theo điều kiện như trên đã nêu
  3. Chỉ dùng công thức, tùy ý dùng bất kỳ từ phiên bản 2010 trở đi; Không dùng cột phụ hay Names.
  4. Kết quả mẫu tính tay như cột G và H
Bảng dữ liệu như file đính kèm.

Chúc anh em ngày vui
Cảm ơn anh rất nhiều.
 
Lỗi do tôi không rà xét lại khi dùng dữ liệu của người khác, các bạn chỉnh lại dữ liệu ô B6 là "T2. 10/03/2025 10:21". Lý do là ngày T6. 03/10/2025 đã có mặt trong danh mục các ngày lễ.
Screenshot_20250703_110304_Excel.jpg

Cảm ơn các bạn
 
Lâu lâu mới được gặp lại người thầy, người anh đáng kính.
Em xin phép góp vui trước công thức cho Ngày giờ bắt đầu điều chỉnh:
Mã:
D6=IF(OR(WEEKDAY(B6,2)=7,ISNUMBER(MATCH(INT(B6),$J$6:$J$10,0))),WORKDAY.INTL(B6,1,"0000001",$J$6:$J$10)+TIME(8,0,0),IF(MOD(B6,1)>TIME(17,0,0),WORKDAY.INTL(B6,1,"0000001",$J$6:$J$10)+TIME(8,0,0),IF(MOD(B6,1)>TIME(12,0,0),INT(B6)+MEDIAN(MOD(B6,1),TIME(13,0,0),TIME(17,0,0)),INT(B6)+MEDIAN(MOD(B6,1),TIME(8,0,0),TIME(12,0,0)))))
Fill xuống
Fill xuống.
Giải thích:
- Trường hợp 1: Ngày bắt đầu rơi vào ngày lễ hoặc Chủ nhật --> Dùng hàm Workday.Intl để tính ra ngày bắt đầu, cộng thêm 8h là thời gian làm việc buổi sáng.
- Trường hợp 2: Ngày bắt đầu rơi vào ngày làm việc
+ Quá 17h: Tương tự trường hợp 1
+ Quá 12h: Dùng Median để xác định trung vị giữa 3 mốc 13h, 17h và giờ của ngày bắt đầu
+ Còn lại thì Dùng Median để xác định trung vị giữa 3 mốc 8h, 12h và giờ của ngày bắt đầu

Việc tính thời điểm kết thúc để em nghĩ thêm :)
Chúc anh và mọi người 1 ngày vui.
 
Cảm ơn tác giả đã đưa ra một đề bài rất thú vị!
Mình xin góp vui bằng một file hoàn chỉnh, có chút không tự đúng lắm, rất vui nếu được anh chị góp ý thêm

Công thức tính ngày kết thúc, mình có tham khảo lại từ bomberman211 trong bài trước.
=WORKDAY.INTL(D6,ROUNDUP(MAX((C6-(17/24-TIME(HOUR(D6),MINUTE(D6),0)-IF(TIME(HOUR(D6),MINUTE(D6),0)<0.5,1/24,0))*24),0)/8,0),11,$J$6:$J$10)
 

File đính kèm

Lâu lâu mới được gặp lại người thầy, người anh đáng kính.
Em xin phép góp vui trước công thức cho Ngày giờ bắt đầu điều chỉnh:
Mã:
D6=IF(OR(WEEKDAY(B6,2)=7,ISNUMBER(MATCH(INT(B6),$J$6:$J$10,0))),WORKDAY.INTL(B6,1,"0000001",$J$6:$J$10)+TIME(8,0,0),IF(MOD(B6,1)>TIME(17,0,0),WORKDAY.INTL(B6,1,"0000001",$J$6:$J$10)+TIME(8,0,0),IF(MOD(B6,1)>TIME(12,0,0),INT(B6)+MEDIAN(MOD(B6,1),TIME(13,0,0),TIME(17,0,0)),INT(B6)+MEDIAN(MOD(B6,1),TIME(8,0,0),TIME(12,0,0)))))
Fill xuống
Fill xuống.
Giải thích:
- Trường hợp 1: Ngày bắt đầu rơi vào ngày lễ hoặc Chủ nhật --> Dùng hàm Workday.Intl để tính ra ngày bắt đầu, cộng thêm 8h là thời gian làm việc buổi sáng.
- Trường hợp 2: Ngày bắt đầu rơi vào ngày làm việc
+ Quá 17h: Tương tự trường hợp 1
+ Quá 12h: Dùng Median để xác định trung vị giữa 3 mốc 13h, 17h và giờ của ngày bắt đầu
+ Còn lại thì Dùng Median để xác định trung vị giữa 3 mốc 8h, 12h và giờ của ngày bắt đầu

Việc tính thời điểm kết thúc để em nghĩ thêm :)
Chúc anh và mọi người 1 ngày vui.
Giỏi em trai!
Lâu lắm mới thấy em tham gia, anh rất vui.

Cách phân định của em rõ ràng, lại xét thêm 2 trường hợp: ngày bắt đầu là ngày CN hay rơi vào ngày lễ ngoài yêu cầu của anh mà anh không để ý tới, rất hay!

Để công thức của em "bắt mắt", cho anh góp nhẹ vài sửa đổi nha!

1/ Vì điều kiện phần 1: OR( ngày CN, Ngày lễ), thì qua ngày kế (không phải CN, lễ) + 8h, vậy sẵn điều kiện phần 2 cũng +8h em nhét chung vào OR() đó luôn.
2/ Thay vì dùng "0000001" em thay bằng 11
3/ Các hàm TIME() có thể thay bằng 8/24 (=1/3), 13/24, 17/24...
4/ Dùng COUNTIF($J$6:$J$10,INT(B6)) thay cho ISNUMBER(MATCH(INT(B6),$J$6:$J$10,0)), vì Countif() nếu có/không nó sẽ ra 1/0 thì OR() cũng chấp nhận, còn Match() thì báo lỗi nếu không tìm thấy, nên phải dùng đến Isnumber().

Vậy công thức sẽ là: ô D6
Mã:
=IF(OR(WEEKDAY(B6,2)=7,COUNTIF($J$6:$J$10,INT(B6)),MOD(B6,1)*24>17),WORKDAY.INTL(B6,1,11,$J$6:$J$10)+1/3,IF(MOD(B6,1)*24>12,INT(B6)+MEDIAN(MOD(B6,1)*24,13,17)/24,INT(B6)+MEDIAN(MOD(B6,1)*24,8,12)/24))

Xem vậy được không em?

Chúc điều tốt đẹp đến em và gia đình
/-*+//-*+//-*+/
 
Giỏi em trai!
Lâu lắm mới thấy em tham gia, anh rất vui.

Cách phân định của em rõ ràng, lại xét thêm 2 trường hợp: ngày bắt đầu là ngày CN hay rơi vào ngày lễ ngoài yêu cầu của anh mà anh không để ý tới, rất hay!

Để công thức của em "bắt mắt", cho anh góp nhẹ vài sửa đổi nha!

1/ Vì điều kiện phần 1: OR( ngày CN, Ngày lễ), thì qua ngày kế (không phải CN, lễ) + 8h, vậy sẵn điều kiện phần 2 cũng +8h em nhét chung vào OR() đó luôn.
2/ Thay vì dùng "0000001" em thay bằng 11
3/ Các hàm TIME() có thể thay bằng 8/24 (=1/3), 13/24, 17/24...
4/ Dùng COUNTIF($J$6:$J$10,INT(B6)) thay cho ISNUMBER(MATCH(INT(B6),$J$6:$J$10,0)), vì Countif() nếu có/không nó sẽ ra 1/0 thì OR() cũng chấp nhận, còn Match() thì báo lỗi nếu không tìm thấy, nên phải dùng đến Isnumber().

Vậy công thức sẽ là: ô D6
Mã:
=IF(OR(WEEKDAY(B6,2)=7,COUNTIF($J$6:$J$10,INT(B6)),MOD(B6,1)*24>17),WORKDAY.INTL(B6,1,11,$J$6:$J$10)+1/3,IF(MOD(B6,1)*24>12,INT(B6)+MEDIAN(MOD(B6,1)*24,13,17)/24,INT(B6)+MEDIAN(MOD(B6,1)*24,8,12)/24))

Xem vậy được không em?

Chúc điều tốt đẹp đến em và gia đình
/-*+//-*+//-*+/
Quá tuyệt luôn anh ạ.
Thay vì dùng "0000001" em thay bằng 11 --> em thực tình là không nhớ các loại số này, chỉ nhớ đúng anh dạy là 0 là ngày làm việc, 1 là ngày nghỉ --> Cách viết "0000001" thực tế là 1 kiểu "lười ghi nhớ" anh ạ :)
 
Cảm ơn tác giả đã đưa ra một đề bài rất thú vị!
Mình xin góp vui bằng một file hoàn chỉnh, có chút không tự đúng lắm, rất vui nếu được anh chị góp ý thêm
Rất vui khi bạn tham gia

Dù công thức như thế nào, cũng đem lại cho bạn và tôi những giây phút trăn trở và hân hoan khi tìm ra được phương án giải quyết!

Việc học là muôn đời, nên khi có gì vui vui tôi hay mang lên "chia ngọt sẻ bùi" với anh em bè bạn. Bạn cứ yên tâm, sẽ có những đóng góp của nhiều anh em và qua đó bạn sẽ rút tỉa nhiều kiến thức cho mình.

Chúc bạn ngày vui

Thân
 
Rất vui khi bạn tham gia

Dù công thức như thế nào, cũng đem lại cho bạn và tôi những giây phút trăn trở và hân hoan khi tìm ra được phương án giải quyết!

Việc học là muôn đời, nên khi có gì vui vui tôi hay mang lên "chia ngọt sẻ bùi" với anh em bè bạn. Bạn cứ yên tâm, sẽ có những đóng góp của nhiều anh em và qua đó bạn sẽ rút tỉa nhiều kiến thức cho mình.

Chúc bạn ngày vui

Thân
Em nghĩ mãi vẫn không ra nổi cách tính Ngày giờ kết thúc dự kiến.
Nhờ anh có thể cho gợi ý về thuật toán để tư duy với ạ :)
 
Em nghĩ mãi vẫn không ra nổi cách tính Ngày giờ kết thúc dự kiến.
Nhờ anh có thể cho gợi ý về thuật toán để tư duy với ạ :)
Theo chỗ anh nghĩ được để giải quyết bài toán này có 2 thuật toán, nhưng do thời lượng hằng ngày làm việc là 8 tiếng nên cách 1 phù hợp và gọn gàng hơn, đó là:

"Thời gian thực hiện (tiếng)" loại trừ thời lượng của ngày bắt đầu, số còn lại nó sẽ định đoạt bao nhiêu ngày và giờ cần có.

Chúc em ngày vui
/-*+//-*+//-*+/
(Tb: anh ngủ đêêê...:) )
 
Do trong tuần ngồi không, nên lục lọi bài cũ, thấy bài này: Tính ngày giờ kết thúc công việc (không tính thời gian nghỉ) cũng hay hay, có thể nhiều anh em cần đến, nên đào lại cho những anh em nào yêu thích viết hàm và công thức giải trí, tạo công thức cho vui:

Điều kiện:
- Ngày làm việc: từ thứ 2 đến thứ 7; Chủ nhật và ngày lễ nghỉ việc
- Giờ làm việc 8 tiếng từ: 8h đến 17h (nghỉ giữa buổi từ 12h-13h không tính vào giờ làm)

Yêu cầu:
  1. Ngày giờ bắt đầu: Cần điều chỉnh lại Ngày/Giờ (cột B file kèm), trả kết quả vào cột D "Ngày giờ bắt đầu (điều chỉnh)"
    • Nếu sớm hơn 8h00: chỉnh thành 8h00
    • Nếu rơi vào khung 12h -13h: chỉnh thành 13h
    • Nếu bằng hay quá 17h00: chỉnh thành 8h00 của ngày kế tiếp (không rơi vào ngày Chủ nhật và ngày lễ)
  2. Ngày giờ kết thúc dự kiến: Dựa vào "Thời gian thực hiện (tiếng)" và "Ngày giờ bắt đầu (điều chỉnh)", tính toán và trả kết quả vào cột E "Ngày giờ kết thúc dự kiến "
    • Theo điều kiện như trên đã nêu
  3. Chỉ dùng công thức, tùy ý dùng bất kỳ từ phiên bản 2010 trở đi; Không dùng cột phụ hay Names.
  4. Kết quả mẫu tính tay như cột G và H
Bảng dữ liệu như file đính kèm.

Chúc anh em ngày vui
Góp vui bằng công thức tính ngày giờ kết thúc trực tiếp từ ngày giờ bắt đầu chưa điều chỉnh.
Mã:
=LET(f;LAMBDA(a;x;WORKDAY.INTL(a-1;x+1;11;$J$6:$J$10));h;C6+IF(f(B6;0)=INT(B6);LET(m;MOD(B6;1)*24;MEDIAN(m;8;12)-8+MEDIAN(m;13;17)-13);0);t;MOD(h;8);f(B6;INT(h/8))+
(8+t+(t>4)-(t=0)*15)/24)
 
Góp vui bằng công thức tính ngày giờ kết thúc trực tiếp từ ngày giờ bắt đầu chưa điều chỉnh.
Mã:
=LET(f;LAMBDA(a;x;WORKDAY.INTL(a-1;x+1;11;$J$6:$J$10));h;C6+IF(f(B6;0)=INT(B6);LET(m;MOD(B6;1)*24;MEDIAN(m;8;12)-8+MEDIAN(m;13;17)-13);0);t;MOD(h;8);f(B6;INT(h/8))+
(8+t+(t>4)-(t=0)*15)/24)
Đúng là "thứ dữ", chơi hai trong một luôn! Đáng nể thật!

Anh mà đăng bài thì ít nhất cũng học được điều gì đó mới mẻ, như công thức này chơi ngay Lambda() lên đầu, rồi gọi nó lúc nào muốn, không cần đưa vào Names, thật tiện lợi. Cảm ơn anh nhiều.

Chúc anh ngày thiệt vui
/-*+//-*+//-*+/
 
Các bạn thân mến

Đừng hoảng khi thấy anh @huuthang_bd đã ra "chiêu" lợi hại rồi chùn tâm không dám "múa rìu qua mắt thợ" :).

Ảnh rất tốt, muốn chia sẻ công thức của mình gồm cả thuật toán và cách vận dụng hàm thông minh cho mọi người, tức là: "hổng giấu nghề" :), thật sự trong lòng tôi luôn phục anh @huuthang_bd về việc này.

Đây chỉ là bài toán tôi chia sẻ có thể nhiều anh em phải gặp trong thực tế, mà sự vận dụng hàm/công thức để xử lý nó lại tùy thuộc vào khả năng của từng anh em có được, do vậy anh em cứ mạnh dạn nêu cách giải quyết của mình, mọi công thức anh em làm ra đều đáng trân trọng. Tôi biết trên diễn đàn này còn nhiều anh em khác đã có bài giải, nhưng "bên trong đã muốn, bên ngoài còn e", các bạn cứ mạnh dạn nêu lên cách tự mình tìm ra, dần dần sẽ tạo niềm tự tin cho các bạn.

Thông qua sự chia sẻ này, có thể sẽ có sự góp ý thêm, hoặc chúng ta sẽ tự rút ra nhiều bài học hữu ích để tự mình nâng cấp hoặc tìm ra lối đi riêng của mình, từ đó sẽ giải quyết nhiều bài toán khác trong tương lai.

Chúc việc học excel của các bạn ngày càng vui và lý thú

/-*+//-*+//-*+/
 
Đúng là "thứ dữ", chơi hai trong một luôn! Đáng nể thật!

Anh mà đăng bài thì ít nhất cũng học được điều gì đó mới mẻ, như công thức này chơi ngay Lambda() lên đầu, rồi gọi nó lúc nào muốn, không cần đưa vào Names, thật tiện lợi. Cảm ơn anh nhiều.

Chúc anh ngày thiệt vui
/-*+//-*+//-*+/
Bạn phê như thế sợ nhiều người hiểu lầm.
Lambda nằm trong names có công dụng giống như hàm UDF viết bằng VBA.
Lambda khai báo và dùng tại chỗ giống như hàm/sub đã định là Private trong một Module VBA nào đó.
Cái khác nhau chính thức là không gian định danh. Người viết đặt nó trong names là vì họ thiết kế nó khá tổng quát, có thể dùng ở nhiều nơi khác nhau. Khi gói riêng (trong hàm Let) là người viết cho rằng nó quá đặc thù và không muốn nơi khác gọi nó.

Trong đề bài (bài #1), bạn không cho dùng cột phụ và names là vì bạn muốn các con tính phụ chỉ có mục đích phục vụ đề bài, không dùng ở nơi khác (*1). Và bài #13 đáp ứng đúng nhu cầu ấy.

Giải thích (*1):
Nếu không có điều kiện 3 ở bài #1, và người ta thêm cột phụ thì kết quả cột phụ này có thể được truy cập bất cứ nơi nào trong bảng tính.
 
Lần chỉnh sửa cuối:
Lambda nằm trong names có công dụng giống như hàm UDF viết bằng VBA.
Lambda khai báo và dùng tại chỗ giống như hàm/sub đã định là Private trong một Module VBA nào đó.
Dạ, cảm ơn anh đã hướng dẫn thêm.

Hổm rày thư thư, em vọc mấy cái hàm 365 để cho nó thấm từ từ như lời anh "vẽ đường cho nai chạy" trước đây :), cũng lần lần tỏ tường công dụng của vài hàm mà em quan tâm đến trước. Không như trước đây có đủ thời gian và môi trường thuận lợi (đúng ngành nghề) để chuyên tâm nghiên cứu mổ xẻ nó, nay em học theo lối thực dụng, thấy có bài nào vui vui thì tự so sánh: trước đây dùng mảng thì xử lý làm sao, còn giờ thì 365 hỗ trợ hàm gì, có tiện lợi hơn không, và vì sao nó chạy hoặc ngược lại..v.v. Nên đôi khi có vài chỗ ngắc ngứ cũng đành để đó, giống hôm bữa em có nói với anh do em xài excel trên "dế yêu", dù biết là lambda hữu ích cho việc "tóm đầu" các đoạn công thức cùng công năng, nhưng không có Names nên bó tay, bó chân chạy không 'trơn tru', nay thấy anh @huuthang_bd bày nó trong Let() như "gãi đúng chỗ ngứa", thích chí cười khà khà vậy mà anh.

Vài dòng tâm sự đến anh

Chúc anh ngày vui khỏe
/-*+//-*+//-*+/
 
Bây giờ là sáng sớm Chủ nhật bên đó, tuần này thì tôi hết ngồi không, vã lại thời gian mấy ngày nay chắc các bạn cũng đã nghiền ngẫm, trăn trở với nó rồi, nên cũng là lúc tôi cũng phải đưa ra cách xử lý của mình. Tôi sẽ dùng cách đại trà để ai cũng dễ nắm bắt vấn đề.

Các bạn cũng sẽ như tôi lúng túng trong việc làm sao xác định được số ngày cộng thêm mà không bị rơi vào ngày CN và lễ, thấy rắc rối nhưng không phải vậy, và giống như tôi gợi ý với bạn @vanthinh3101 ở bài #12
"Thời gian thực hiện (tiếng)" loại trừ thời lượng của ngày bắt đầu, số còn lại nó sẽ định đoạt bao nhiêu ngày và giờ cần có.
Vd: Ngày bắt đầu còn 1.5 tiếng, thời gian thực hiện cần 20 tiếng, vậy thời gian còn lại là = 20 - 1.5 = 18.5 tiếng. Vì 1 ngày làm việc cố định 8 tiếng, vậy cần 3 ngày cộng thêm (8*3=24 tiếng -> bội số của 8) để thực hiện kết thúc, trong đó 2 ngày đầu mất 16 tiếng, vậy giờ kết thúc là 2.5 tiếng. Ngày kết thúc bắt đầu từ lúc 8h00 + 2.5 tiếng = 10h30 là mốc giờ kết thúc.

Muốn tìm bội số của 8 thì tôi dùng hàm Ceiling( 'Thời gian còn lại' /8 ,1). Vậy, đặt bội số này vào hàm:
=WORKDAY.INTL( 'Ngày bắt đầu', 'bội số của 8', 11, 'Ngày CN/ lễ' ) thì tìm được ngày cần thêm để kết thúc công việc mà không rơi vào CN và ngày lễ.

Tôi thực hiện cả hai phiên bản trước và từ 365 để các bạn trước 365 có thể tham khảo:

1/ Công thức trước 365:
a. Ngày giờ điều chỉnh:
Mã:
=WORKDAY.INTL(B6,N(MOD(B6,1)*24>=17),11,$J$6:$J$12)+IF(MOD(B6,1)*24<17,TEXT(MAX(MOD(B6,1)*24,8),"[<12];[>13];13"),8)/24
b.Ngày giờ kết thúc:
Mã:
=WORKDAY.INTL(D6,CEILING((C6-(17-ROUND(MOD(D6,1)*24,6)-(ROUND(MOD(D6,1)*24,6)<13)))/8,1),11,$J$6:$J$12)+IF(MOD(C6-(17-ROUND(MOD(D6,1)*24,6)-(ROUND(MOD(D6,1)*24,6)<13)),8),8+MOD(C6-(17-ROUND(MOD(D6,1)*24,6)-(ROUND(MOD(D6,1)*24,6)<13)),8)+(MOD(C6-(17-ROUND(MOD(D6,1)*24,6)-(ROUND(MOD(D6,1)*24,6)<13)),8)>4),17)/24

2/ Công thức 365:
a. Ngày giờ điều chỉnh:
Mã:
=LET(gio,MOD(B6,1)*24,WORKDAY.INTL(B6,N(gio>=17),11,$J$6:$J$12)+IF(gio<17,TEXT(MAX(gio,8),"[<12];[>13];13"),8)/24)
b.Ngày giờ kết thúc:
Mã:
=LET(Gcl,LET(gio,ROUND(MOD(D6,1)*24,6),C6-16+gio-(gio>12)),Glt,CEILING(Gcl/8,1),Gdc,Gcl-Glt*8,WORKDAY.INTL(D6,Glt,11,$J$6:$J$12)+(16+Gdc+(8+Gdc>4))/24)

Các bạn xem đồ biểu, thuật toán tôi có nêu trong file kèm

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

File đính kèm

Web KT

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

Back
Top Bottom