前几接到一个小姐姐Excel问题求助,怎么计算出一个时间段里的天数?乍一听貌似很简单,拿结束日期减开始日期就有了呀,然后她发了个截图,我一瞅(内心:**%%##)。
需要解决的问题遇到问题第一步当然是先仔细观察、寻找规律,这题的关键点就是怎么把单元格里和文字混在一起的日期给提取出来。
可以看出每个单元格是有共同点的:
1、两个日期间是用‘-’连接
2、日期结束后紧跟着‘:’
有这两点问题就很好解决了,‘-’可以把两个日期分开,‘:’可以直接定位到日期结束的位置,不管后面有再多的文字都没影响了。
1.获取开始日期
最左边的日期用文本函数left提取,left(提取的文本单元格,提取几个字符)
这一步的难点在于怎么确定要提取几个字符,日期有1位的和2位的 9/7和10/25 这样提取的字符数就不能是固定的,这个时候‘-’连接符就发挥了大作用,只要能定位到‘-’符号左边一位就行。
先找到‘-’符号的位置,可以使用find函数,find(查找的字符,在哪个单元格找,[第几位开始]),在B2单元格输入=FIND("-",A2) 注意括号里的双引号
找到拆分位置可以看到“-”符号是在单元格的第4位,只要需要提取到前面一位就是第一个日期的整个位置了,补充公式 =LEFT(A2,FIND("-",A2)-1) 。FIND("-",A2)-1 就是在“-”符号的前一位
拆分出左边的日期2.获取结束日期
在一串字符中截取中间部分需要用到mid函数。mid(文本单元格,第几位开始截取,截取几位),根据图例代公式 =mid(A2, ‘-’符号后一位开始截取,‘:’号前一位截止),MID(A2,FIND("-",A2)+1,‘:’号前一位截止),最后一个参数也是个难点,FIND(":",A2)找到的是‘:’所在的位置,变成截取几位的参数还需要个转化,用找到':'的位置 减去 找到‘-’的位置,就是要截取的截取的结束日期的个数了,FIND(":",A2)-(FIND("-",A2)+1),完整的公式就是
=MID(A2,FIND("-",A2)+1,FIND(":",A2)-(FIND("-",A2)+1))
拆分出右边的日期3.日期相减出天数
上面已经获取到了结束日期和开始日期,接下来让两个日期相减
结束日期-开始日期+1 (如果包含当天就+1),代入公式如下
=MID(A2,FIND("-",A2)+1,FIND(":",A2)-(FIND("-",A2)+1))-LEFT(A2,FIND("-",A2)-1)+1
公式合并日期相减这里会存在一种特殊情况就是跨年,因为提取到的日期没有显示年份系统会默认识别为同一年,如果出现12/20-1/7 这种,结束时间1/7 就会小于 开始时间12/20(同年),所以还要加上一个判断,如果两个日期相减为负数就再加一个365,最终公式如下
=IF(MID(A2,FIND("-",A2)+1,FIND(":",A2)-(FIND("-",A2)+1))-LEFT(A2,FIND("-",A2)-1)+1<0,MID(A2,FIND("-",A2)+1,FIND(":",A2)-(FIND("-",A2)+1))-LEFT(A2,FIND("-",A2)-1)+1+365,MID(A2,FIND("-",A2)+1,FIND(":",A2)-(FIND("-",A2)+1))-LEFT(A2,FIND("-",A2)-1)+1)
处理年底特殊情况以上就是本次的案列说明,可以多练习几次,举一反三熟悉文本函数的应用。
网友评论