0

我有一列数据,我想根据从最早到最晚的时间进行排序。

数据格式如下:

0 天 22 小时 41 分钟,

0 天 2 小时 3 分钟

等等。

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

请建议最好的方法,如果可以的话,还有公式。

4

3 回答 3

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})

于 2013-03-26T19:01:37.567 回答
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。

希望有帮助。

于 2013-03-26T18:56:11.583 回答
0

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

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

=左(A1,查找(“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

此页面描述了日期操作示例的替换行为。

于 2013-03-26T19:19:14.570 回答