2023-02-20 07:32来源:m.sf1369.com作者:宇宇
2020年1月11号到10月18号有九个月过月底,其中大月有1,3,5,7,二月有29天,应为是闰年,其他月份都是30天,这样,2020年1月11日到2020年10月11日有273天,那么再到10月18日,需要再加7天,一共有280天。如果用excel的公式求和,那就会变得简单多了。
工具:office excel步骤
判断公式一:=COUNT(--(B1&-2-29))含义:B1&-2-29部分返回一个文本日期格式,比如2008-2-29。再用减减该文本,如果2008-2-29这个日期存在(也就是闰年时),文本会变成数字,否则变成错误值。而COUNT函数只统计数字的个数,所以如果是闰年COUNT返回1,是平年返回0。
判断公式二:=MONTH(DATE(B1,2,29))=2含义:DATE(年,月,日)返回一个日期,DATE(B1,2,29)这个函数如果B1年份2月只有28天,就会自动变成DATE(B1,3,1),也就是“日”会自动进位到“月”。只要判断DATE(B1,2,29)这个日期的月份就可以了。而MONTH函数就返回日期的月份,只要判断返回结果是不是2就可以了。
判断公式三:=DAY(DATE(B1,3,0))=29含义:DATE(B1,3,0)由于最后的“日”输入的是0,所以返回3月1日前一天的日期。DAY()函数返回日期“年月日”中的“日”。如果3月1日的前一天是29号(也就是闰年时)结果返回TRUE,否则返回FALSE。
判断公式四:=TEXT(B1+400&-2&-29,闰年;;;平年)含义:B1是年份,加上400不影响闰年的判断,但屏蔽了excel表格中对1900年的特殊规定。“年份&-2&-29”返回一个日期格式,如果确实是日期,则TEXT返回大于0时的结果“闰年”,如果不是日期则判断为一个文本,返回文本时对应的“平年”。
TEXT(参数,结果1;结果2;结果3;结果4),TEXT对第一参数判断,分大于0、小于0、等于0和文本四种情况分别返回:=TEXT(参数,大于0时;小于0时;等于0时;是文本时)。上例中第一参数是日期,是一个大于0的数字,则返回第一个分号之前的内容,如果是文本则返回最后一个分号后的内容。
判断公式六(基础的IF函数判断):=IF(MOD(B1,4)>0,平,IF(MOD(B1,100)>0,闰,IF(MOD(B1,400)>0,平,闰)))含义:MOD()函数是取余数的函数,比如说MOD(10,4)就是10除以4的余数,返回2。MOD(8,4)返回0,因为8能被4整除,余数是0。IF判断过程如下:如果年份除以4余数大于0,就是不能被4整除,是平年,返回“平”;下一步能被4整除但不能被100整除,是闰年,返回“闰”;再下一步能被100整除,但不能被400整除(也就是mod(B1,400)>0)是平年,返回“平”,反之返回“闰”。
首先,闰年的计算方式是:
1. 能被4整除且又不能被100整除 是闰年;
2. 能直接被400整除也是闰年。
所以,这个公式是这样解释的:today()是取今天的日期;
year(today())是取今天所属的年,这里得到的就是 2014 ;
mod(year(Today()),4)=0 是表示今天所属的年能被4整除为 true,不能为 false;
同理mod(year(Today()),100)>0 【你这里在100后面少了一个“)”,】是表示今天所属的年不能被100整除为true,能为 false;
And(mod(year(Today()),4)=0 , mod(year(Today()),100)>0 )就是这两个条件要同时满足,也就是上面提到的第一点:能被4整除且又不能被100整除 是闰年;
同理,MOD(YEAR(TODAY()),400)=0 【注意这里应该是0,而不是 O】是表示今天所属的年能被400整除为 true,不能为 false;也就是上面提到的第二点:能直接被400整除也是闰年。
Or(AND(MOD(YEAR(TODAY()),4)=0,MOD(YEAR(TODAY()),100)>0),MOD(YEAR(TODAY()),400)=0) 就是这两个条件任一一个满足即可。
明白了吗?
Sub at()
年份 = Year(Now())
If (年份 Mod 4 = 0 Or 年份 Mod 400 = 0) And 年份 Mod 100 <> 0 Then
MsgBox 闰年
Else
MsgBox 平年
End If
End Sub
假设A列是年份,B列判断是否是闰年。B1单元格公式如下:
=IF(OR(AND(MOD(A1,4)=0,MOD(A1,100)<>0),MOD(A1, 400)=0),闰年,)
闰年特点:四年一闰,百年不闰,四百年再闰。
每400年97次闰年。
1、打开一个excel表格:
2、在A1单元格内输入需要查询的年份,例如1990(1990是平年,不是闰年):
3、在B1单元格内输入公式=IF((MOD(A1,400)=0)+(MOD(A1,4)=0)*MOD(A1,100),闰年,平年):
4、输入完公式回车可以看到刚才输入1990年是否是闰年:
5、在A1单元格输入2016或者其他任意闰年检验,公式得出的结果与实际相符:
可以有公式:(以2017为例,其它年,只需修改公式中的2017就可以)
=IF(DAY(DATE(2017,3,0))=29,闰年,平年)
可以使用公式:
=IF(DAY(3-1-1)=29,闰年,非闰年)
#include
int isRunyear(int year)
{
if(year%400==0 || year%4==0 && year%100!=0)
return 1;
return 0;
}
void main()
{
int year;
printf(输入年份,输出1表示该年为闰年,0为非闰年\n);
scanf(%d,&year);
printf(\n%d,isRunyear(year));
}