小编今天给大家介绍一下如何计算时长,时长和的问题主要聚焦在1)分钟和时间转换问题2)如何提取时间数据3)处理异常数据如空值等等。来看下面示例:
解决步骤:
1.提取小时数据:
E3=VALUE(IFERROR(LEFT(D3,FIND("小",D3,1)-1),0))
解释为:FIND函数找“小”字在D3字符串的位置,减去1,作为左侧小时的位数,LEFT函数截取左侧的小时数,如果不存在小时或者没有记录则用IFERROR函数用0表示,最后用VALUE函数把截取到的数字字符串转换为数字格式。
2.提取分钟数据:
F3=VALUE(IFERROR(MID(D3,IFERROR(FIND("时",D3,1),0)+1,FIND("分",D3,1)-IFERROR(FIND("时",D3,1),0)-1),0))
解释为:分别用FIND函数找“分”和“时”在D3中的位置。找到后用MID函数截取分钟数,起始位置就是FIND函数找“时”加上1,如果FIND“时”函数错误,用IFERROR把错误值变成0,同理截取的字符串个数就是FIND“分”的位置-FIND“时”的位置再减去1,然后套个IFERROR来排除空值错误显示为0,最后套个VALUE函数转变为数字。
3.统一单位为分钟:
G3=E3*60+F3
解释为小时*60+分钟
4.求和时长
H3=CONCATENATE(INT(SUM(G3:G18)/60),"小时",MOD(SUM(G3:G18),60),"分钟")
解释为:先把统一后的分钟数求和,然后除以60在向下取整作为小时数,再把除以60的余数作为分钟数,用到MOD函数求余数。最后用CONCATENATE函数连接,显示格式为:数字+小时+数字+分钟
当然最后还可以不用统一为分钟,去掉G列,后面总小时数为E列的求和加上F列求和除以60的向下取整,然后F列的余数作为分钟数。