在Excel里面,关于日期和时间的计算让很多人头疼,其实非常简单,只需要我们掌握一个运算原理:日期和时间与数值可以相互转化,日期等价整数,时间等价小数,日期和时间的加减乘除就是数值的加减乘除。

日期和数值的相互转化:

整数值转成日期,数值大小是距离1900年1月1日多少天,比如1转成日期格式就是1900-1-1,数值20转成日期格式就是1900-1-20,对应的日期转成数值也是,比如将日期2019-10-11转成常规格式是43749,43749是2019年10月11日到1900年1月1日相差的天数。



lua 日期加减天数 日期加减公式excel_excel减法函数


另外在函数里,日期和数值也可以转化的,非常灵活,比如=year(1),year函数的参数应该是个日期,但1是数值,函数会把数值转成日期,也就是=year("1900-1-1"),返回1990,这里要注意,如果函数的参数是日期,必须要用引号引起来,如果不加引号,会当做数值运算,比如=year(1900-1-1),返回的不是1900,而是1905,会把1900-1-1当做数值运算,用1900减1再减1,得到1898,距离1900年1月1日 1898天,是1905年3月12日,所以返回1905年。


lua 日期加减天数 日期加减公式excel_excel取整函数_02


时间和数值的相互转化

小数转成日期,比如0.5变成时间格式就是12:00,0.2变成时间,就是24*0.2=4.8,就是4点48分,但注意的是只有小数会变成时间,整数变成时间格式都是0:00,例如3变成时间格式是0:00,3.5变成时间格式是12:00,但需要注意的是3.5变成时间格式只是显示为12:00,而实际的内容是1900-1-3 12:00,所以当我们做时间运算时,千万不要只看单元格的内容,是不真实的,要看编辑栏里的内容。


lua 日期加减天数 日期加减公式excel_excel取整函数_03


日期的运算就是数值的运算

日期的加减乘除运算的底层逻辑就是数值的加减乘除运算,比如日期1900-1-2乘3,底层就是2*3=6,再转为日期就是1900-1-6,日期1900-1-10乘100,就是10*100=1000,转为日期就是1902-9-26。所以当再碰到日期和时间的运算时就不要慌啦,底层就是数值的运算,比如要计算1902-9-26与1900-1-6相差多少天,就可以直接用减法。


lua 日期加减天数 日期加减公式excel_panda提取时间戳中的日期_04


用案例看日期和时间的运算


lua 日期加减天数 日期加减公式excel_excel取整函数_05


这是一个停车收费计算表,A列是车牌,B列是停车日期,C列是停车时间,D列是离开日期,E列是离开时间,现在需要计算停车收费,标准是1分钟0.1元。

1.首先在F列计算停留几天,比如第三行,虽然停车日期是2月1日,离开日期是2月2日,但是不到24小时,不能算一天,可以在F列输入公式=INT(D3+E3-C3-B3),D3+E3得到离开的日期时间,减去C3再减去B3就是停留的时间(整数+小数,整数代表天,小数代表时间),想要得到停留的天数,也就是整数部分,用int函数取整;

2.在G列计算停留时间(一天内的),其实就是上一步得到结果的小数部分,可以用=D3+E3-B3-C3-F3,得到停留的时间;

3.在H列计算停留的总分钟,用F列的天数*24小时*60分钟+G列转化为分钟,函数为=F3*24*60+HOUR(G3)*60+MINUTE(G3);

4.在I列得到最后的收费,用H列的分钟*0.1,=H3*0.1;

5.如果我们对日期和时间运算非常熟悉的话,可以一步得到结果:=INT((D3+E3-B3-C3)*24*60)*0.1,D3+E3-B3-C3得到的是停留的天数,包括小数部分,比如结果是2.2,那就停留2.2天,一天是24小时*60分钟,因为还有秒,这里没做考虑,所以直接用取整函数,乘0.1得到最后的结果。

最后补充以下,有些人会用text函数生成时间,再对时间做运算,得不到正确结果,因为text函数返回的是文本,需要在函数前面加一个 -- ,变成数值型就可以啦。