使用公式将格式0d 22h 41min转换为任何格式的时间

时间:2013-03-26 17:58:14

标签: excel formula

我有一列数据要根据从最早到最晚的时间排序。

数据格式如下:

0d 22h 41min,

0d 2h 3min

最好的方法是什么?我假设提取数字,0,22和41,然后使用计算将其转换为分钟,这将允许我重新排序它?

如果可以的话,请告知最好的方法和公式。

3 个答案:

答案 0 :(得分:3)

假设始终存在天数小时和分钟,则使用A2中的数据尝试B2中的此公式以转换为时间值:

=SUM(MID(0&A2,FIND({"d","h","m"},0&A2)-2,2)/{1,24,1440})

自定义格式B2为[h]:mm以显示总小时数和分钟数...然后您可以使用B作为“关键字”对两列进行排序

这将处理最多99天的值 - 对于更高的天数尝试此版本

=LEFT(A2,FIND("d",A2)-1)+SUM(MID(A2,FIND({"h","m"},A2)-2,2)/{24,1440})

答案 1 :(得分:1)

您可以通过多种方式执行此操作,但可以在公式中使用一些简单的字符串操作和连接:

假设

A1 = 0d 22h 41min
A2 = 0d 2h 3min

首先,您必须使用MID()函数

提取hh和mm

你可以通过使用FIND()函数搜索“d”,“h”和“m”的位置来提取它们之间的数字。

最后,您只需使用“:”

将22:41连接在一起

对于A1(放入另一栏,即B1):

=MID(A1, FIND( "d", A1) + 2, SUM( FIND( {"d","h"}, A1) * {-1,1}) - 2 )&":"&IF(LEN(MID(A1, FIND( "h", A1) + 2, SUM( FIND( {"h","m"}, A1) * {-1,1}) - 2))=2,MID(A1, FIND( "h", A1) + 2, SUM( FIND( {"h","m"}, A1) * {-1,1}) - 2 ),"0"&MID(A1, FIND( "h", A1) + 2, SUM( FIND( {"h","m"}, A1) * {-1,1}) - 2 ))

结果应为

A1 = 0d 22h 41min
A2 = 0d 2h 3min

B1 = 22:41
B2 = 2:03

应该注意,如果发生“3min”,我们使用LEN()函数来查看分钟值是1个字符还是2个字符长。如果是2个字符(即41个)则保持原样。如果它是1个字符(即3),则在其前面加0以获得03。

希望有所帮助。

答案 2 :(得分:0)

假设您的数据在A列,单元格A1,A2等中,您可以使用以下公式来提取日期,小时和分钟,然后添加所有内容:

首先,将天数提取到单元格B1中:

  

= LEFT(A1,FIND(“d”,A1) - 1)

现在,进入C1的几个小时:

  

= MID(A1,FIND(“d”,A1)+2,FIND(“h”,A1)-FIND(“d”,A1)-2)

进入D1的分钟:

  

= MID(A1,FIND(“h”,A1)+ 1,FIND(“min”,A1)-FIND(“h”,A1)-1)

将天数加入E1:

  

= B1 * 24 * 60 + C1 * 24 + D1

现在按E列排序。

另一种可能性是使用正则表达式查找和替换数据:

查找

  

([0-9] {1,2})d([0-9] {1,2})h([0-9] {1,2})min

取代:

  

= \ 1 * 24 * 60 + \ 2 * 24 + \ 3

This page描述了日期操作示例中的替换行为。