我有一列数据,我想根据从最早到最晚的时间进行排序。
数据格式如下:
0 天 22 小时 41 分钟,
0 天 2 小时 3 分钟
等等。
最好的方法是什么?我假设提取数字 0、22 和 41,然后使用计算将其转换为分钟,然后我可以重新排序?
请建议最好的方法,如果可以的话,还有公式。
假设总是存在天数小时和分钟,然后使用 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})
您可以通过多种方式执行此操作,但可以在公式中使用一些简单的字符串操作和连接:
假设
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。
希望有帮助。
假设您的数据在 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
此页面描述了日期操作示例的替换行为。