需要帮助在 Google 表格上将文本转换为持续时间格式的时间

问题描述 投票:0回答:3

在这里寻求一些帮助,我试图在Google表格上将文本转换为持续时间格式的时间,我使用了一些基本函数来细分文本(分隔符为d(天)h(小时)m(分钟)和s (第二)转换为随后烘焙到时间函数中的值,但是对于超过 24 小时的输出,我无法使其正确格式化,即在下图中,375 小时应显示 375:00:00 或 [H]:mm: SS

这里有什么想法吗?

共享文档

https://docs.google.com/spreadsheets/d/1YWHM5tPaLOulHMbfdR8CZJsER7LBceWLQrm9f8JcV9c/edit#gid=0

date google-sheets time datetime-format duration
3个回答
1
投票

尝试一下,J12

=(G12+H12/60+I12/60/60)/24

然后应用持续时间格式


0
投票

尝试:

=FLATTEN(INDEX(QUERY(, "select  "&TEXTJOIN(",", 1, 
 SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B7:B27, 
 "d", "*86400"), "h", "*3600"), "m", "*60"), "s", "*1"), " ", "+")))/86400, 2))


更新

改进版:

=INDEX(IFERROR(1/(1/BYROW(B3:B15, LAMBDA(i, LET(x, "(\d+)\s*", SUM(IFERROR(
 REGEXEXTRACT(i, x&{"d"; "h"; "m"; "s"}), 0)*{86400; 3600; 60; 1})/86400))))))

enter image description here


0
投票

使用

regexextract()
,如下所示:

=arrayformula( 
  iferror(regexextract(B7:B, "(\d+)\s*h"), 0) & ":" & 
  iferror(regexextract(B7:B, "(\d+)\s*m"), 0) & ":" & 
  iferror(regexextract(B7:B, "(\d+)\s*s"), 0) 
)

公式给出文本字符串。要获取数字持续时间,请使用

value()
,如下所示:

=arrayformula( 
  iferror( 1 / 
    value( 
      iferror(regexextract(B7:B, "(\d+)\s*h"), 0) & ":" & 
      iferror(regexextract(B7:B, "(\d+)\s*m"), 0) & ":" & 
      iferror(regexextract(B7:B, "(\d+)\s*s"), 0) 
    ) 
  ^ -1 ) 
)

将结果列格式化为 格式 > 数字 > 持续时间

如果您要转换的文本字符串中有许多组件,则仅使用一个

regextextract()
可能会有所帮助,这可以使用最近引入的 lambda 函数:

=arrayformula( 
  map( 
    B7:B, 
    lambda( 
      duration, 
      if( 
        len(duration), 
        join( 
          ":", 
          iferror( 
            regexextract( 
              duration, 
              { "(\d+)\s*h"; "(\d+)\s*m"; "(\d+)\s*s" } 
            ), 
            0 
          ) 
        ), 
        iferror(1/0) 
      ) 
    ) 
  ) 
)

请参阅此答案,了解日期和时间值在电子表格中如何工作的说明。

© www.soinside.com 2019 - 2024. All rights reserved.