将查询结果重写为时间

Rewrite the results of query to time

我有以下代码:

={"HOURS"; ARRAYFORMULA(IFNA(VLOOKUP(B86:B145,
{REGEXEXTRACT(""&'Sheet1'!D6:D, TEXTJOIN("|", 1, B86:B145)), 'Sheet1'!H6:H}, 2, 0)))}

这将 return(一些示例):

1h

1h 52s

2h 48m

3m 9s

5m

36s

所以有不同的结果(从 Sheet1 格式化的方式)h=小时,m=分钟,s=秒

是否可以通过编辑我的公式将其转换为时间?

01:00:00

01:00:52

02:48:00

00:03:09

00:05:00

00:00:36

示例 sheet:https://docs.google.com/spreadsheets/d/1c3HdMq4PA50pYr88JqPoG51jvru8ipp8ebe4z5DczTQ/edit?usp=sharing

您可以使用 =TIME() 函数将值转换为时间。例如:

=TIME(13, 0, 52) 将导致 1:00:52 PM。如果您不想包含 AM/PM,或者想要小时中的前导 0,您可以在格式 > 数字设置中更改时间格式。

如果您在电子表格中包含 link,则结合您已有的公式会更容易找到完整的解决方案。


注意:我可能完全把它复杂化了,但我已经使用了这个方法,所以我将分享我的解决方案。我确实尝试将这些公式中的大部分结合起来,但没有成功。

我将逐步介绍如何进行设置,以尽可能简化设置。

  1. Sheet1中,将公式=arrayformula(split(H6:H65, " "))放入单元格I6
  2. Sheet1中,将公式=arrayformula(SPLIT(lower(I6:I65),"qwertyuihmsopadfgjklzxcvbn``-=[]\;',./!@#$%^&*()"))放在单元格K6中。
  3. Sheet1中,将公式=iferror(arrayformula(SPLIT(lower(J6:J65),"qwertyuihmsopadfgjklzxcvbn``-=[]\;',./!@#$%^&*()")),"-")放入单元格L6
  4. Sheet1中,将以下公式放入单元格M6
=arrayformula(time(
if(iferror(search("h", I6:I65))>1, K6:K65, 0), 
if(iferror(search("h", I6:I65))>1, if(iferror(search("m", J6:J65))>1, L6:L65, 0),if(iferror(search("m", I6:I65))>1, K6:K65, 0)),
if(iferror(search("h", I6:I65))>1, if(iferror(search("m", J6:J65))>1, 0, if(iferror(search("s", J6:J65))>1, L6:L65, 0)), if(iferror(search("s", I6:I65))>1, K6:K65, if(iferror(search("s", J6:J65))>1, L6:L65, 0)))))
  1. MAIN中,将公式=ARRAYFORMULA(vlookup(B86:B145, Sheet1!D6:M65, 10))放在单元格E86中。
  2. MAIN 中,用您的时间值突出显示范围 (E6:E145),然后转到格式 > 数字 > 更多格式 > 更多日期和时间格式
  3. 向下滚动直到找到 13:30:30。如果在列表中找不到,请参考下图手动设置格式。

现在您的时间格式应该正确了。为了美观,Sheet1 中包含中间公式的列可以根据需要隐藏。

Spreadsheet

尝试:

={"HOURS"; 
 ARRAYFORMULA(IFNA(IF(VLOOKUP(B86:B, Sheet1!D:H, 5, 0)="-", "-", TEXT(TIME(
 IFNA(REGEXEXTRACT(VLOOKUP(B86:B, Sheet1!D:H, 5, 0), "(\d+)h")), 
 IFNA(REGEXEXTRACT(VLOOKUP(B86:B, Sheet1!D:H, 5, 0), "(\d+)m")), 
 IFNA(REGEXEXTRACT(VLOOKUP(B86:B, Sheet1!D:H, 5, 0), "(\d+)s"))), "hh:mm:ss"))))}


如果这些时间是持续时间,请使用:[hh]:mm:ss