我有一列数据要根据从最早到最晚的时间排序。
数据格式如下:
0d 22h 41min,
0d 2h 3min
等
最好的方法是什么?我假设提取数字,0,22和41,然后使用计算将其转换为分钟,这将允许我重新排序它?
如果可以的话,请告知最好的方法和公式。
答案 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描述了日期操作示例中的替换行为。