Tìm ngày đầu tuần, cuối tuần khi biết tuần thứ bao nhiêu của năm????

  • Thread starter Thread starter Nad SK
  • Ngày gửi Ngày gửi
Liên hệ QC
Thì mình cho hiễn thị 4 hay 5 tuần đầu của 1 số năm mà. hê, hê, . . .
 
Khi làm việc một mình quanh ao làng thì thế nào cũng được. Khi ra thế giới hợp tác thì người ta thống nhất dùng 1 chuẩn. Vì nếu mỗi người dùng 1 chuẩn thì làm sao hợp tác được? Khi thống nhất dùng 1 chuẩn thì thường người ta sẽ theo ISO 8601.

Hàm WEEKNUM thì cũng phải xác định dùng theo system nào. Tự nó không quyết định được. Phải người dùng quyết định.

Mọi người hãy dùng WEEKNUM với ISO 8601 (system 2) cho 01, 02, 03-01-2021 xem có đúng là: "Tuần đầu của năm luôn bắt đầu từ ngày 1 tháng 1 và tuần này có thể không đủ 7 ngày. Tuần cuối cùng của năm cũng có khả năng là tuần thiếu" nhé.

Ít nhất là thiếu câu: "Chỉ đúng với system 1, không đúng với system 2 (ISO 8601)". Nói kiểu kia là làm cho rất nhiều người nhầm lẫn.

Ngoài ra làm gì có "tuần thiếu". Trục ngày (thời gian) dài vô tận, và cứ 7 ngày là 1 tuần. Vấn đề là người ta không muốn đánh số thứ tự liên tiếp bắt đầu từ mốc nào đó cho đến vô tận. Người ta muốn cứ sang năm mới thì đánh số lại từ 1. Vì luôn xảy ra trường hợp có tuần bắt đầu từ năm này và kết thúc vào năm tiếp theo nên mới phải thống nhất chuẩn để tính toán. Thế thôi, chứ làm gì có chuyện có tuần thiếu. Cái tuần bắt đầu từ 28-12-2020 đâu có phải tuần thiếu. 3 ngày 01, 02, 03-01-2021 chính là "các con" của tuần này.

Bài toán của người ta không phải là: "Hãy tính tuần cho ngày cho trước". Bài toán của người ta là: "Hãy tính ngày thứ 2 của tuần 1 của năm cho trước". Bài toán khác hoàn toàn, nếu chỉ 1 hàm đơn thương độc mã WEEKNUM thì tính bằng niềm tin à? Tất nhiên thêm hàm gì đó nữa thì có thể dễ với người này và khó với người khác.
 
Tôi có thấy tính gì đâu?

Nếu tính theo chuẩn ISO 8601:2004 thì ...

Công thức tính ngày thứ 2 của tuần đầu tiên trong năm được nhập ở A2
Mã:
=DATE(A2; 1; 1)-WEEKDAY(DATE(A2; 1; 1); 2)+7*(WEEKDAY(DATE(A2; 1; 1); 2)>4)+1
Hi vọng đúng. Chỉ buồn là công thức dài quá.

Muốn tính cho tuần cho trước thì cộng thêm bội số của 7 thôi. Vd. tuần ở B2 thì cộng thêm (B2-1)*7
Sao không phải là công thức
=DATE(A2, 1, 1)+1-WEEKDAY(DATE(A2, 1, 1), 2)
Hay khác vậy
 
Sao không phải là công thức
=DATE(A2, 1, 1)+1-WEEKDAY(DATE(A2, 1, 1), 2)
Hay khác vậy
Bạn tự kiểm tra chứ sao hỏi tôi?

Mà tôi nói rõ. Tôi chỉ nói là có chuẩn ISO 8601:2004 và khi hợp tác toàn cầu thì sẽ phải thống nhất dùng 1 chuẩn. Dùng chuẩn nào là do những người trong cuộc thống nhất.

Bạn dùng chuẩn nào thì tự kiểm tra công thức của mình. Sao lại hỏi tôi?

Công thức của tôi là làm theo ISO 8601:2004. Hi vọng là đúng. Còn tại sao nó dài? Thì tôi chỉ làm chơi 1 lần, không suy nghĩ nhiều. Và cũng vì sức tôi yếu, không được như nhiều người. Thế thôi.
 
Tôi có thấy tính gì đâu?

Nếu tính theo chuẩn ISO 8601:2004 thì ...

Công thức tính ngày thứ 2 của tuần đầu tiên trong năm được nhập ở A2
Mã:
=DATE(A2; 1; 1)-WEEKDAY(DATE(A2; 1; 1); 2)+7*(WEEKDAY(DATE(A2; 1; 1); 2)>4)+1
Hi vọng đúng. Chỉ buồn là công thức dài quá.

Muốn tính cho tuần cho trước thì cộng thêm bội số của 7 thôi. Vd. tuần ở B2 thì cộng thêm (B2-1)*7
Dùng hàm Mod tiết kiệm được 1 WEEKDAY(DATE())
Mã:
=DATE(A2,1,1)+3-MOD(WEEKDAY(DATE(A2,1,1))+1,7)
 
Dùng hàm Mod tiết kiệm được 1 WEEKDAY(DATE())
Mã:
=DATE(A2,1,1)+3-MOD(WEEKDAY(DATE(A2,1,1))+1,7)
Nếu dùng excel từ 2010, chắc vầy gọn hơn không anh? Mấy nay máy tính hư nên không kiểm tra được, nhờ anh giúp dùm.
Mã:
 =WORKDAY.INTL(DATE(A2, 1,1),1,"0111111")

Chúc anh ngày vui.

Thân
/-*+//-*+//-*+/
 
Nếu dùng excel từ 2010, chắc vầy gọn hơn không anh? Mấy nay máy tính hư nên không kiểm tra được, nhờ anh giúp dùm.
Mã:
 =WORKDAY.INTL(DATE(A2, 1,1),1,"0111111")

Chúc anh ngày vui.

Thân
/-*+//-*+//-*+/
Máy mình Excel 2007, bạn @phuocam Kiểm tra dùm nha
Chúc bạn và gia đình vui khỏe, mọi sự như ý /-*+//-*+//-*+/
 
Web KT

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

Back
Top Bottom