Tính Ngày Kết Thúc Dựa Vào Ngày Bắt Đầu (1 người xem)

  • Thread starter Thread starter Bandit
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Bandit

Thành viên chính thức
Tham gia
12/9/19
Bài viết
55
Được thích
38
Chào anh chị, em có vấn đề nhờ các anh chị giúp
Giả sử chúng ta có hàm NETWORKDAYS("30/01/2020";"18/04/2020") nghĩa là từ ngày 30/01/2020 đến ngày 18/07/2020 là 57 ngày sau khi trừ thứ 7 và chủ nhật
Vậy giờ biết ngày bắt đầu là 30/01/2020, và có 57 ngày không tính thứ 7, chủ nhật, thì dùng công thức gì để tính ra được ngày kết thúc là 18/04/2020 ạ
Em cảm ơn
 
Chào anh chị, em có vấn đề nhờ các anh chị giúp
Giả sử chúng ta có hàm NETWORKDAYS("30/01/2020";"18/04/2020") nghĩa là từ ngày 30/01/2020 đến ngày 18/07/2020 là 57 ngày sau khi trừ thứ 7 và chủ nhật
Vậy giờ biết ngày bắt đầu là 30/01/2020, và có 57 ngày không tính thứ 7, chủ nhật, thì dùng công thức gì để tính ra được ngày kết thúc là 18/04/2020 ạ
Em cảm ơn
Mình gợi ý giải thuật để bạn làm thử nhé:
Bạn cứ lấy ngày 30/01/2020 +57 ngày vào: được ngày 27/03/2020. Xong bạn tính số ngày T7 và CN trong khoảng từ ngày 30/01/2020 đến 27/03/2020. Xong bạn lại lấy ngày 27/03/2020 cộng vào số ngày T7 và CN bạn mới tính được => Xong rồi đó bạn! :)
Gom lại thành 1 công thức dễ mà đúng không?! :)
 
Mình gợi ý giải thuật để bạn làm thử nhé:
Bạn cứ lấy ngày 30/01/2020 +57 ngày vào: được ngày 27/03/2020. Xong bạn tính số ngày T7 và CN trong khoảng từ ngày 30/01/2020 đến 27/03/2020. Xong bạn lại lấy ngày 27/03/2020 cộng vào số ngày T7 và CN bạn mới tính được => Xong rồi đó bạn! :)
Gom lại thành 1 công thức dễ mà đúng không?! :)
Có chắc 'xong' hôn?
Tính ra trúng ngày thứ bảy, chủ nhật lại phải đi tiếp.
 
Có chắc 'xong' hôn?
Tính ra trúng ngày thứ bảy, chủ nhật lại phải đi tiếp.

Nhờ bác giúp em với ạ
Mình gợi ý giải thuật để bạn làm thử nhé:
Bạn cứ lấy ngày 30/01/2020 +57 ngày vào: được ngày 27/03/2020. Xong bạn tính số ngày T7 và CN trong khoảng từ ngày 30/01/2020 đến 27/03/2020. Xong bạn lại lấy ngày 27/03/2020 cộng vào số ngày T7 và CN bạn mới tính được => Xong rồi đó bạn! :)
Gom lại thành 1 công thức dễ mà đúng không?! :)
Em thử cách của bác nhưng nó không ra kết quả đúng nơi ạ
 
Nhờ bác giúp em với ạ

Em thử cách của bác nhưng nó không ra kết quả đúng nơi ạ
Ủa bài của bạn chỉ cần dùng hàm này là được rồi nè:
Mã:
=WORKDAY.INTL(A3;57;"0000011")
Với ô A3 là ngày 30/01/2020 á bạn. :D

Bạn tìm hiểu hàm WORKDAY.INTL nhé. Ở trên có cụm "0000011" là để định nghĩa 2 ngày nghỉ trong tuần là T7 và CN á.

Không phải ra 18/04/2020 đâu vì ngày này là ngay ngày T7 á. Kết quả đúng là ngày 20/04/2020 á.
 
Ủa bài của bạn chỉ cần dùng hàm này là được rồi nè:
Mã:
=WORKDAY.INTL(A3;57;"0000011")
Với ô A3 là ngày 30/01/2020 á bạn. :D

Bạn tìm hiểu hàm WORKDAY.INTL nhé. Ở trên có cụm "0000011" là để định nghĩa 2 ngày nghỉ trong tuần là T7 và CN á.
Em có thử hàm đó thì nó trả về là 20/04/2020 chứ không phải là 18/04/2020 bác ạ
 
Em có thử hàm đó thì nó trả về là 20/04/2020 chứ không phải là 18/04/2020 bác ạ
Nhưng ngày 18/04/2020 là ngay ngày thứ Bảy mà. Bạn muốn nếu dừng ngay thứ Bảy thì hiển thị ngày đó luôn hả?
Nếu vậy bạn phải cho thêm điều kiện á:
Ngày kết thúc rơi vào T7 thì tính sao? Thêm If vào thôi! Đúng là như bác vetmini bảo là phải lồng thêm hàm Weekday vào nữa là được.
 
Lần chỉnh sửa cuối:
1600224401657.png
1600224444720.png
18/04 là thứ bảy cho nên nó tự động nhảy sang thứ hai là 20/04.
Muốn sửa thành 18/04 cũng không khó nhưng không ai làm vậy bởi vì công thức nếu kéo xuống mấy dòng khác (ngày khác) sẽ gây nhiểu lầm.
 
Em có thử hàm đó thì nó trả về là 20/04/2020 chứ không phải là 18/04/2020 bác ạ
Mình làm như bạn muốn nhé: nếu ngày kết thúc nhằm ngay T7 thì giữ nguyên ngày đó luôn, không bỏ qua T7 và CN ngay thời điểm kết thúc, tại ô B3 bạn nhập:
Mã:
=IF(WEEKDAY(WORKDAY.INTL(A3;57;"0000011"))=2;WORKDAY.INTL(A3;57;"0000011")-2;WORKDAY.INTL(A3;57;"0000011"))
1600224833279.png
 
Mình làm như bạn muốn nhé: nếu ngày kết thúc nhằm ngay T7 thì giữ nguyên ngày đó luôn, không bỏ qua T7 và CN ngay thời điểm kết thúc, tại ô B3 bạn nhập:
Mã:
=IF(WEEKDAY(WORKDAY.INTL(A3;57;"0000011"))=2;WORKDAY.INTL(A3;57;"0000011")-2;WORKDAY.INTL(A3;57;"0000011"))
Nếu kết thúc vào CN ngày 19/4 thì sao?
Công thức bạn mặc định nếu Workday là thứ 2 thì - 2 ngày, trong khi có 2 T/H rơi vào T7 và CN, kết quả vẫn về T7 ngày 18/4.
 
Nếu kết thúc vào CN ngày 19/4 thì sao?
Công thức bạn mặc định nếu Workday là thứ 2 thì - 2 ngày, trong khi có 2 T/H rơi vào T7 và CN, kết quả vẫn về T7 ngày 18/4.
Em đã nghĩ đến điều anh nói. Nhưng thớt không tính ngày T7 CN thì làm sao kết thúc ngay ngày CN được anh?! :D
Công thức em đã tính trọn hết các trường hợp mà thớt mong muốn rồi đó. Anh hỏi thớt xem đúng không! Hi.
 
Em đã nghĩ đến điều anh nói. Nhưng thớt không tính ngày T7 CN thì làm sao kết thúc ngay ngày CN được anh?! :D
Công thức em đã tính trọn hết các trường hợp mà thớt mong muốn rồi đó. Anh hỏi thớt xem đúng không! Hi.
NETWORKDAYS("30/01/2020";date) với date là 17,18,19/4 (T6,T7,CN) đều cùng trả về 57
Thớt có nói là trả về T7 đâu. Có thể bạn ấy chưa test hết cho T/H T6 và CN.

Vậy mình thử làm xem, trả về đúng ngày thì sao? Chưa thử, nhưng có thể lồng vào: nếu T7 thì trừ 2, vậy T6 thì trừ 3, CN thì trừ 1 chẳng hạn?
 
NETWORKDAYS("30/01/2020";date) với date là 17,18,19/4 (T6,T7,CN) đều cùng trả về 57
Thớt có nói là trả về T7 đâu. Có thể bạn ấy chưa test hết cho T/H T6 và CN.

Vậy mình thử làm xem, trả về đúng ngày thì sao? Chưa thử, nhưng có thể lồng vào: nếu T7 thì trừ 2, vậy T6 thì trừ 3, CN thì trừ 1 chẳng hạn?
Em hiểu ý anh nhưng mà cái công thức này:
Mã:
=IF(WEEKDAY(WORKDAY.INTL(A3;57;"0000011"))=2;WORKDAY.INTL(A3;57;"0000011")-2;WORKDAY.INTL(A3;57;"0000011"))
- nếu rơi vào ngày T6 thì nó vẫn giữ nguyên, đâu cần trừ 3 làm chi đâu anh? :D
- càng không rơi vào CN vì bản thân hàm Workday.intl với đối số "0000011" em đã loại luôn T7 CN ra rồi.
- chỉ còn rơi vào T2 (vì ngày kết thúc trùng T7 nên nó loại tiếp T7 CN) thì em mới trừ 2 để cho nó lùi về ngay ngày T7 theo đúng ý như bài đầu tiên thớt nói á anh.

@bebo021999 : em chỉ suy nghĩ về công thức của bác @phuocam á, hình như đúng luôn, em chưa nghĩ ra trường hợp sai :( nếu quả thật như vậy thì em tệ quá tệ, hiiiii.
 
Lần chỉnh sửa cuối:
Mình làm như bạn muốn nhé: nếu ngày kết thúc nhằm ngay T7 thì giữ nguyên ngày đó luôn, không bỏ qua T7 và CN ngay thời điểm kết thúc, tại ô B3 bạn nhập:
Mã:
=IF(WEEKDAY(WORKDAY.INTL(A3;57;"0000011"))=2;WORKDAY.INTL(A3;57;"0000011")-2;WORKDAY.INTL(A3;57;"0000011"))
Sao bạn không dùng WORKDAY mà cứ phải WORKDAY.INTL vậy?
 
- nếu rơi vào ngày T6 thì nó vẫn giữ nguyên, đâu cần trừ 3 làm chi đâu anh? :D
- càng không rơi vào CN vì bản thân hàm Workday.intl với đối số "0000011" em đã loại luôn T7 CN ra rồi.
- chỉ còn rơi vào T2 (vì ngày kết thúc trùng T7 nên nó loại tiếp T7 CN) thì em mới trừ 2 để cho nó lùi về ngay ngày T7 theo đúng ý như bài đầu tiên thớt nói á anh.

@bebo021999 : em chỉ suy nghĩ về công thức của bác @phuocam á, hình như đúng luôn, em chưa nghĩ ra trường hợp sai :( nếu quả thật như vậy thì em tệ quá tệ, hiiiii.

Workday = 2 thì workday-2, tức là cố định nó về thứ 7, cho dù ngày đang xét có thể là T6, T7 hay CN. Bài toán mình đặt ra (cho dù có thể thớt k hỏi) nhưng mình thử làm là trả chính xác về ngày xét.

Ví dụ cụ thể trong thực tế nhé:
Anh A ở quê lên làm hồ, nhận thầu 1 công trình với yêu cầu hoàn tất trong 57 ngày làm việc (T7 và CN không được thi công). Xong sớm nghỉ sớm, tranh thủ về quê.
Ngày bắt đầu làm việc: 30/1/2020
Dùng hàm WORKDAY, kết quả là Thứ 2, 20/4/2020.
Câu hỏi 1: Anh A phải chờ đến thứ hai 20/4/2020 mới về quê được, hay có thể về sớm hơn?
Câu hỏi 2: Tối thứ sáu, 17/4/2020 có xe người nhà về quê, anh A có theo xe về được không?

Trả lời 1: Có thể về sớm hơn, vì T7 và CN là ngày nghỉ. Nếu dựa vào kết quả "thứ 2" là không chính xác
Trả lời 2: Dùng hàm networkday để đếm số ngày giữa 30/1 và 17/4, kết quả = 57. Như vậy tối thứ sáu anh A đã hoàn thành công việc và có thể về quê.

Vấn đề đặt ra là, ngày xét là 17/4 tính từ 30/1, trả về 57 ngày LV, lấy 57 ngày LV tính từ 30/1 là về 20/4.

Còn cấu trúc = workday(ngày bắt đầu, số ngày LV-1)+1
là logic loại ngày cuối cùng ra không xét T7,CN, sau đó +1 để trả về ngày bình thường trong tuần
 
...Còn cấu trúc = workday(ngày bắt đầu, số ngày LV-1)+1
là logic loại ngày cuối cùng ra không xét T7,CN, sau đó +1 để trả về ngày bình thường trong tuần
Tôi đã cảnh cáo là sẽ có khả năng hiểu lầm.
Ví dụ có một đồ án cần 3 ngày để xong (cuối ngày thứ 3 sản phẩm hoàn thành). Bắt đầu từ thứ năm, đúng cách tính toán thì thứ hai mới xong. Làm theo kiểu thớt muốn thì sẽ ra thứ bảy. Nếu thứ bảy không có làm việc thì chẳng phải đồ án tự động mất 1 ngày?
Vì tình cảm mà để lẫn lộn số ngày công việc là quản lý vô trách nhiệm với công ty.

Việc anh A hay B nào đó hoàn tất sớm có thể về quê không phải là vấn đề của người quản lý đồ án. Nếu muốn cho phép làm sớm, người quản lý đồ án phải có hai ngày: ngày đồ án ngưng (không cần thêm gì nữa) tức thứ sáu, và ngày chính thức nhận đồ án, tức thứ hai. Trên nguyên tắc quản lý thì đồ án ấy thuộc loại 3 ngày tóm lại thành 2.
 
Tại con muốn trả về một ngày sau ngày bắt đầu một số ngày làm việc đã xác định với ngày cuối tuần tùy chỉnh á.
Tính ngày kết thúc mà bỏ qua thứ 7, CN thì cứ WORKDAY mà dùng, chừng nào có tùy biến về những ngày nghỉ khác thứ 7, CN thì mới dùng WORKDAY.INTL
 
Tính ngày kết thúc mà bỏ qua thứ 7, CN thì cứ WORKDAY mà dùng, chừng nào có tùy biến về những ngày nghỉ khác thứ 7, CN thì mới dùng WORKDAY.INTL
Định nguy hiểm chút mà sư phọ khó quá :))

1) WORKDAY(X,Y)



2) WORKDAY(X,Y,"0000011")

Mà cũng công nhận, giống như 2 cái máy giặt chạy bằng cơm, cấu tạo y chang nhau, cái nào còn ở trong thùng (chưa khui, trường hợp 1) vẫn hấp dẫn và khó đoán hơn hơn cái đã qua sử dụng (đã khui, trường hợp 2)
 
Định nguy hiểm chút mà sư phọ khó quá :))

1) WORKDAY(X,Y)



2) WORKDAY(X,Y,"0000011")

Mà cũng công nhận, giống như 2 cái máy giặt chạy bằng cơm, cấu tạo y chang nhau, cái nào còn ở trong thùng (chưa khui, trường hợp 1) vẫn hấp dẫn và khó đoán hơn hơn cái đã qua sử dụng (đã khui, trường hợp 2)

Cảm ơn bác đã nhiệt tình tư vấn, cái hàm WORDAY.INTL trên 365 đối số thứ 3 nó show hẳn luôn kiểu 1 là thứ 7, chủ nhật, 2 là chủ nhật....chứ không cần phải nhập "0000011" vào. Không biết trên các phiên bản office nó thế nào bác ạ
 
Cảm ơn bác đã nhiệt tình tư vấn, cái hàm WORDAY.INTL trên 365 đối số thứ 3 nó show hẳn luôn kiểu 1 là thứ 7, chủ nhật, 2 là chủ nhật....chứ không cần phải nhập "0000011" vào. Không biết trên các phiên bản office nó thế nào bác ạ
Để tui cho bạn xem bên Office 2016 của tui nhen:
1600328326988.png

Tui hỏi thăm bạn cái này: nếu bạn tính ngày làm việc của một Tổ hay Phòng ban nào mà trong tuần làm việc họ nghỉ T2 với T6 hoặc T3 với T5 thì bạn sẽ chọn đối số là số mấy? :)
Chuỗi 7 kí tự nhị phân thì nó biểu diễn được liền á:
nghỉ T2 với T6 => "1000100"
nghỉ T3 với T5 => "0101000"
 
Để tui cho bạn xem bên Office 2016 của tui nhen:
View attachment 245699

Tui hỏi thăm bạn cái này: nếu bạn tính ngày làm việc của một Tổ hay Phòng ban nào mà trong tuần làm việc họ nghỉ T2 với T6 hoặc T3 với T5 thì bạn sẽ chọn đối số là số mấy? :)
Chuỗi 7 kí tự nhị phân thì nó biểu diễn được liền á:
nghỉ T2 với T6 => "1000100"
nghỉ T3 với T5 => "0101000"
Em tưởng trên Office 365 nó hiển thị vậy nên hỏi xem như nào thôi chứ vào thực tế đúng trường hợp như bác thì xài như bác vậy.
 

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

Back
Top Bottom