Excel 日期相减处理

       今天帮用户处理了一个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"))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值