我在here上提出了类似的问题,答案是准确有效的,但只有在输入
时才有效` 1小时1分1秒
格式。如果是其他格式,则会导致错误。
问题的解决方案
= VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A5," h ",":")," m ",":")," s",""))
我的问题如下:
我可以知道将以下输入转换为预期输出的方法吗?
提前致谢
基于两个公式
= SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(ISNUMBER(SEARCH(“m”,S32)),IF(ISNUMBER(SEARCH(“h”,S32)),“”,“0h”),“0h0m” “)及S32,” ”, “”), “M”, “:”), “H”, “:”), “S”, “”)* 1
和
=(IF(ISERROR(SEARCH( “H”,A1)), “0:”, “”)及IF(ISERROR(SEARCH( “米”,A1)), “0:” “” )及SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, “H”, “:”), “M”, “:”), “S”, “”))+ 0
如果输入是
1 h 5 s
它会导致错误。
结果应遵循下面的测试用例
答案 0 :(得分:1)
简单的方法是添加缺少的部分,如:
=(IF(ISERROR(SEARCH("h",A1)),"0:","")&IF(ISERROR(SEARCH("m",A1)),"0:","")&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"h",":"),"m",":"),"s",""))+0
然后直接格式化它,看起来你想要它......
答案 1 :(得分:1)
我不知道这个答案是否与您之前收到的答案相似,但是在这里答案。
让我们假设你的时间字符串在单元格S32中。您需要编辑公式以适合您的位置。
我们需要TIME函数,它需要传递三个参数:
TIME(ARG1, ARG2, ARG3)
要确定小时数,请检查源小区中是否有h。这可以通过SEARCH或FIND功能完成。如果找到搜索到的字符串,它们将返回一个数字,如果不是,则返回错误。我们可以使用ISNUMBER函数来确定是否找到了H.
ISNUMBER(SEARCH("h",S2))
将需要IF函数来确定将使用小时的值。上述公式的检查将是决定因素。如果h在那里,我们可以使用LEFT函数获取LEFT 2个字符并获得小时数。如果没有找到H,那么我们将使用0,因为没有时间。
IF(ISNUMBER(SEARCH("h",S2)),LEFT(S32,2),0)
所以现在你已经退出了工作时间,或者确定0如果没有时间。我们可以在几分钟内应用相同的流程。不同之处在于我们无法使用LEFT功能。而是使用MID功能。
在m确定m与搜索功能的位置的情况下,那个开始拉动字符的长度为2的左边的3个字符。这将导致在此显示的分钟数公式如下。它还包含用于M检查的IF函数,如果未找到则返回0。
IF(ISNUMBER(SEARCH("m",S32)),TRIM(MID(S32,SEARCH("m",S32)-3,2)))
现在假设你的等式中总是存在s,可以通过取最后4个字符,然后从所选择的前2个字符中确定秒数。这是通过嵌套的LEFT和RIGHT函数完成的,如下所示:
LEFT(RIGHT(S32,4),2)
现在因为我们已经将数字拉了几个小时几分钟,所以通过方程式可以用作时间函数中的参数,如下所示:
=TIME(IF(ISNUMBER(SEARCH("h",S32)),TRIM(LEFT(S32,2)),0),IF(ISNUMBER(SEARCH("m",S32)),TRIM(MID(S32,SEARCH("m",S32)-3,2))),LEFT(RIGHT(S32,4),2))
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(ISNUMBER(SEARCH("m",S32)),IF(ISNUMBER(SEARCH("h",S32)),"","0h"),"0h0m")&S32," ",""),"m",":"),"h",":"),"s","")*1
无论您的公式选择如何,最后一步是将单元格格式设置为您想要的预设时间,或者以自定义格式将其设置为h:m:ss。您的示例不会在小时或分钟前显示前导零,但会显示前一个自定义格式将提供的秒数。如果您希望对格式更加一致,并且只为单个数字时提供分钟和小时的前导零,请选择hh:mm:ss作为格式。
Dirk的公式包含在图像中,以显示其工作原理。关于如何转换的许多选项。
答案 2 :(得分:1)