问题描述
={"HOURS"; ARRAYFORMULA(IFNA(VLOOKUP(B86:B145,{REGEXEXTRACT(""&'Sheet1'!D6:D,TEXTJOIN("|",1,B86:B145)),'Sheet1'!H6:H},2,0)))}
这将返回(一些示例):
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
样本表:https://docs.google.com/spreadsheets/d/1c3HdMq4PA50pYr88JqPoG51jvru8ipp8ebe4z5DczTQ/edit?usp=sharing
解决方法
尝试:
={"HOURS";
ARRAYFORMULA(IFNA(IF(VLOOKUP(B86:B,Sheet1!D:H,5,0)="-","-",TEXT(TIME(
IFNA(REGEXEXTRACT(VLOOKUP(B86:B,0),"(\d+)h")),IFNA(REGEXEXTRACT(VLOOKUP(B86:B,"(\d+)m")),"(\d+)s"))),"hh:mm:ss"))))}
如果这些时间是持续时间,请使用:[hh]:mm:ss
您可以使用=TIME()
函数将值转换为时间。例如:
=TIME(13,52)
将导致1:00:52 PM
。如果您不想包含AM / PM,或者不想在小时中以0开头,则可以在“格式”>“数字”设置中更改时间格式。
如果您包含电子表格的链接,则可以轻松地与已经找到完整解决方案的公式结合起来。
注意::我可能会为此复杂化,但是我可以使用这种方法,所以我将分享我的解决方案。我确实尝试过将大多数这些公式结合在一起,但是运气不好。
我将逐步介绍如何设置此设置,以使其尽可能简单。
- 在
Sheet1
中,将公式=arrayformula(split(H6:H65," "))
放在单元格I6
中。 - 在
Sheet1
中,将公式=arrayformula(SPLIT(lower(I6:I65),"qwertyuihmsopadfgjklzxcvbn``-=[]\;',./!@#$%^&*()"))
放在单元格K6
中。 - 在
Sheet1
中,将公式=iferror(arrayformula(SPLIT(lower(J6:J65),./!@#$%^&*()")),"-")
放在单元格L6
中。 - 在
Sheet1
中,将以下公式放在单元格M6
中。
=arrayformula(time(
if(iferror(search("h",I6:I65))>1,K6:K65,if(iferror(search("h",if(iferror(search("m",J6:J65))>1,L6:L65,0)),if(iferror(search("s",0)))))
- 在
MAIN
中,将公式=ARRAYFORMULA(vlookup(B86:B145,Sheet1!D6:M65,10))
放在单元格E86
中。 - 在
MAIN
中,用时间值(E6:E145
突出显示范围,然后转到“格式”>“数字”>“更多格式”>“更多日期和时间格式” - 向下滚动直到找到
13:30:30
。如果您无法在列表中找到此格式,请参考下图以手动设置格式。
您的时间现在应该正确格式化。为了美观起见,Sheet1
中包含中间公式的列可以隐藏。