Excel 日期相减处理

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/chuangxin/article/details/6053733

       今天帮用户处理了一个excel日期相减的问题,委实折腾了我一个来小时,这里由衷的感叹微软Excel的强大,同时又想臭骂微软的顽疾(中看不中用)。

       问题描述如下:

A

B

C

D

E

20100101

20090912

2010/1/1

2009/9/12

111

20100101

20090914

2010/1/1

2009/9/14

109

20090823

20100101

2009/8/23

2010/1/1

-131

20091104

20100101

2009/11/4

2010/1/1

-58

20100102

20090818

2010/1/2

2009/8/18

137

20100102

20091205

2010/1/2

2009/12/5

28

20100102

20090412

2010/1/2

2009/4/12

265

       A列和B列存放的是日期格式化成年、月、日的值,用户希望得到A列和B列的日期相差几天。看上去很简单,用excel自带的DATEDIF(start_date,end_date,unit) 函数相减一下即可,其实不然。

 

       解决:

       1)由于datedif只能处理日期值,或者类似2010/12/13等字串,而20101213,其无法处理,同时为了让用户更好明白日期差是如何得到,于是新增CD列分别存放AB转换后的日期值,转换公式为

       C2=DATE(MID(A2,1,4),MID(A2,5,2),MID(A2,7,2))

 

       2datedif函数处理

       原以为通过函数datedif(start_date,end_date,”d”)即可得到两个日期的天数之差,可是当end_date小于start_date时,该函数执行就出错了,真是对微软这种中看不中用的做法深恶痛绝呀。幸好的是,我们可以先比较start_dateend_date大小,然后交换start_dateend_date的顺序即可。

       新增E列,存放CD列日期的天数之差,计算公式如下:

E2=IF(C2>D2,1,-1)*IF(C2>D2,DATEDIF(D2,C2,"d"),DATEDIF(C2,D2,"d"))

展开阅读全文

没有更多推荐了,返回首页