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

我有一列数据,我想根据从最早到最新的时间进行sorting。

数据的格式如下所示:

0d 22h 41min,

0d 2h 3min

等等。

什么是最好的方法来做到这一点? 我假设提取数字0,22和41,然后使用一个计算将其转化为几分钟,这将允许我重新sorting?

请build议最好的方法,如果可以的话也可以配方。

假设天数和分钟总是存在,然后用A2中的数据在B2中尝试这个公式转换为时间值:

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

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

这将处理99天的价值 – 更高的天数尝试这个版本

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

你可以通过多种方式来实现,但是在公式中可以使用一些简单的string操作和连接:

假设

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

首先你必须使用MID()函数提取hh和mm

您可以通过使用FIND()函数来search“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 

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

希望有所帮助。

假设你在列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栏

另一种可能性是使用正则expression式来查找和replace数据:

找:

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

更换:

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

本页面描述了date操作示例中的replace行为。