将“ ## h ## m”转换为##。##小时

时间:2018-07-03 19:30:09

标签: excel google-sheets data-conversion custom-functions-excel

我的时间跟踪应用程序以以下格式导出员工工时:

xxh yym

我正在寻找一种将其转换为十进制小时数的方法。例如,

input(06h 30m)
return(6.5)

无法找到在Google表格或Excel上执行此操作的方法。我尝试创建一个新功能,但它远远超出了我的能力范围。我的编码经验很少。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

另一个公式:

=24*TIMEVALUE(SUBSTITUTE(SUBSTITUTE(A1,"m",""),"h ",":"))

答案 1 :(得分:0)

我不太确定您所说的“输入”是什么意思,以及它是否在您要解析的某种单元格或数据源中,并且不清楚所描述的“ 06h 30m”是否为时间值在具有自定义格式或它是文本字段的单元格中。

此答案假定数据是文本字段(在A2单元格中),并且您希望将数字返回为小时和小时的分数,最长为24小时(因为我还假设这些是员工小时数一天内)。它假设小时或分钟始终是两位数,并且xxh和yym之间只有一个空格:

=TIME(LEFT(A2,2),MID(A2,5,2),0)*24

我希望这至少可以引导您朝着想要的方向前进。

答案 2 :(得分:0)

enum

答案 3 :(得分:0)

Google表格上,您可以通过REGEXEXTRACT()内置函数按照以下公式执行此操作(假设您的文本存储在A1内)

=REGEXEXTRACT(A1,"^(\d{2})h \d{2}m") + REGEXEXTRACT(A1,"^\d{2}h (\d{2})m")/60

  

REGEXEXTRACT()是一个正则表达式提取器函数。输入   06h 30m的文本具有以下模式^\d{2}h \d{2}m,其中

     
      
  • ^指的是字符串的开头
  •   
  • \d指一位数字,\d{2}指两位数字
  •   
  • hm都是参考文字中出现的所有字符。
  •   
     

因此,通过在需要提取的部分周围使用()   文本和简单的算术运算,您可以将06h 30m转换为6.5

     

可以在此找到有关正则表达式语法的更多信息   tutorial