Xác định năm nhuận bằng công thức Excel

Liên hệ QC

quangminhdinh

Thành viên mới
Tham gia
8/11/10
Bài viết
41
Được thích
0
Nghề nghiệp
CN
Tôi muốn khi gõ số năm (ví dụ 2014) vào 1 ô thì biết năm đó có nhuận không?
 
Công thức =IF(DATE(A1+1,1,1)-DATE(A1,1,1)=365,"không nhuận","nhuận")
 
Em thì dùng cách này
= IF(MOD(A1,4)=0,"Nhuận","Không nhuận")
 
Ý bạn là MOD(A1,4)=0? Cái này không đúng vì những năm chia hết cho 100 nhưng không chia hết cho 400 như năm 2100 không phải là năm nhuận.
 
Ý bạn là MOD(A1,4)=0? Cái này không đúng vì những năm chia hết cho 100 nhưng không chia hết cho 400 như năm 2100 không phải là năm nhuận.

Sorry bác, Đúng là phải sửa lại.

=IF(AND(MOD(A1,4)=0,OR(MOD(A1/100,4)=0,(MOD(A1/100,4)<>INT(MOD(A1/100,4))))),"Nhuận","Không nhuận")

Công thức đâm ra loằng ngoằng phết
 
Lần chỉnh sửa cuối:
Cách của bác NDU là ngắn nhất
 
Theo như bài #6 , năm 2104 cũng không có ngày 29/2, Vậy mà tôi thử thay 2100 =2104 thì lại hiện lên 2/29/2104. (tôi đang dùng Excel 2010)
 
Theo như bài #6 , năm 2104 cũng không có ngày 29/2, Vậy mà tôi thử thay 2100 =2104 thì lại hiện lên 2/29/2104. (tôi đang dùng Excel 2010)
Năm 2104 chia hết cho 4, là năm nhuận bạn à. Chỉ những năm không chia hết cho 4 hoặc chia hết cho 100 mà không chia hết cho 400 mới không nhuận.
Công thức này cho dễ hiểu bản chất này (chỉ có nhược điểm là dài)
=IF(AND(MOD(A1,4)=0,OR(MOD(A1,100)<>0,MOD(A1,400)=0)),"Nhuận","KN")
 
Lần chỉnh sửa cuối:
Năm 2104 chia hết cho 4, là năm nhuận bạn à. Chỉ những năm không chia hết cho 4 hoặc chia hết cho 100 mà không chia hết cho 400 mới không nhuận.
Công thức này cho dễ hiểu bản chất này (chỉ có nhược điểm là dài)
=IF(AND(MOD(A1,4)=0,OR(MOD(A1,100)<>0,MOD(A1,400)=0)),"Nhuận","KN")
Công thức của bạn luôn đúng trong trường hợp năm nhỏ hơn hoặc bằng 1900.
Một cách làm khác:
=IF(MOD(IF(MOD(A1,100)=0,A1/100,A1),4)=0,"Nhuận","Không nhuận")
Thân!
 
"Khuyến mại" công thức tính thứ trong trường hợp năm < 1900.
Thu=MOD(d+2m+INT(3*(m+1)/5)+y+INT(y/4)-INT(y/100)+INT(y/400)+2,7)
Nếu Thu=0 là thứ 7, Thu =1 là chủ nhật, Thu=2 là thứ 2...
 
Đã biết vậy sao không dùng: =IF(DAY(DATE(A1,3,0))=29,.....

Bên trên là cách đúng đắn nhất.

Nếu muốn cách tương tự, thay vì xét số ngày của tháng 2 (28 hay 29), ta xét ngày thứ 60 của năm nằm trong tháng nào (2 hay 3):

=CHOOSE(MONTH(DATE(A1,1,60))-1,"nhuan", "khong nhuan")
 
Bên trên là cách đúng đắn nhất.

Nếu muốn cách tương tự, thay vì xét số ngày của tháng 2 (28 hay 29), ta xét ngày thứ 60 của năm nằm trong tháng nào (2 hay 3):

=CHOOSE(MONTH(DATE(A1,1,60))-1,"nhuan", "khong nhuan")
Thường những năm chia hết 100 nhưng không chia hết 400 vẫn không nhuần.
Vậy những năm 1700, 1800,1900 không nhuận , năm 2000 nhuẩn
Nhưng công thức trên cũng như công thức bài #7 cho kết quả 3 năm nhuần,
 

File đính kèm

  • NamNhuan.xls
    14.5 KB · Đọc: 53
Thường những năm chia hết 100 nhưng không chia hết 400 vẫn không nhuần.
Vậy những năm 1700, 1800,1900 không nhuận , năm 2000 nhuẩn
Nhưng công thức trên cũng như công thức bài #7 cho kết quả 3 năm nhuần,

Excel có làm việc với ngày tháng trước năm 1900 đâu bạn
 
Thường những năm chia hết 100 nhưng không chia hết 400 vẫn không nhuần.
Vậy những năm 1700, 1800,1900 không nhuận , năm 2000 nhuẩn
Nhưng công thức trên cũng như công thức bài #7 cho kết quả 3 năm nhuần,

Có lẽ bạn đúng. Hàm dựa theo lịch làm việc thì phải đi theo cái đúng hay sai của lịch. Vấn đề chỉ là khi bước vào vùng mà MS nói là không chính xác (trước 1900) thì tìm cách khác.

Ngày xưa, máy còn yếu và hệ thống chạy 16 bit.
Các hệ thống phần mềm trên thị trường thường hay giản dị hoá lịch bằng cách chỉ bắt đầu từ năm 1900. Lý do rất dễ hiểu, có mấy chuyện xảy ra trước năm ấy đâu?

Ngay cả hệ thông cơ quan gọi nhập ngũ của Pennsylvania (Mỹ) cũng còn bị lỗi vụ này mà (tháng 7 năm 2014).
Muốn biết rõ, tra từ khoá "US Military Draft Bungle"
 
Web KT
Back
Top Bottom