Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何将文本字符串转换为小时_String_Excel_Text - Fatal编程技术网

String 如何将文本字符串转换为小时

String 如何将文本字符串转换为小时,string,excel,text,String,Excel,Text,我有格式为d.hh.mm.ss和hh.mm.ss的数据,我需要将两者转换为时间值hh.mm.ss 在A1中,文本字符串为16.21:38:27 在A2中,文本字符串为04:08:45 我的结果单元格应该显示B1 405:38:27 B2 04:08:45 我试过使用=LEFT(A1,SEARCH(“:”,A1)-1)+TIMEVALUE(MID(A1,SEARCH(“:”,A1)+1255)) 但结果是错误的 A1显示为403:29:24 A2显示为104:45:00 我想要两个字符串的一个公式

我有格式为d.hh.mm.ss和hh.mm.ss的数据,我需要将两者转换为时间值hh.mm.ss

在A1中,文本字符串为16.21:38:27 在A2中,文本字符串为04:08:45

我的结果单元格应该显示B1 405:38:27 B2 04:08:45

我试过使用=LEFT(A1,SEARCH(“:”,A1)-1)+TIMEVALUE(MID(A1,SEARCH(“:”,A1)+1255)) 但结果是错误的 A1显示为403:29:24 A2显示为104:45:00

我想要两个字符串的一个公式,它是:

= IF(ISERROR(FIND(".",A1)),
    TIMEVALUE(A1), 
    VALUE(LEFT(A1,FIND(".",A1)-1)) + TIMEVALUE(MID(A1, FIND(".", A1)+1, 8)))
如果字符串中不存在“.”,它只使用TIMEVALUE()解析时间。否则,它将分别解析“.”之前和之后的部分。天数构成结果的整数部分,时间计算为小数天。然后使用标准格式对话框将其格式化为[h]:mm:ss格式


如果您希望B1存储转换后的时/分/秒字符串,而不是格式化的数字,请将上述内容全部用
文本(上面的公式,“[h]:mm:ss”)
@TimWilliams一针见血。你打错了。将
16.21:38:27
更改为
16:21:38:27
,它将正常工作。您可以另外包装公式以检查长度。如果超过8个字符,则表示添加了日期。看这个例子

试试这个(两个都可以用)

=IF(LEN(A1)>8,左(A1,搜索(“:”,A1)-1)+TIMEVALUE(MID(A1,搜索(“:”,A1)+1255)),TIMEVALUE(A1))

快照

编辑

我刚刚注意到您的公式中有硬编码
255
。你不需要那样做。这也会起作用

=IF(LEN(A1)>8,左(A1,搜索(“:”,A1)-1)+时间值(MID(A1,搜索(“:”,A1)+1,LEN(A1)-搜索(“:”,A1)+1)),时间值(A1))


顺便说一句,为了使其简单明了,您还可以将
TRIM
函数添加到上述公式中…

因为4:08:45是有效的时间格式,而16.21:38:27不是此公式在两种情况下都适用:

=IF(ISNUMBER(A1+0),A1+0,RIGHT(A1,8)+LEFT(A1,FIND(“.”,A1)-1))


将结果单元格格式化为[h]:mm:ss

我猜这是Excel。。。添加了excel标记。您对格式的描述与示例值不匹配-是“d”组件后跟句点还是冒号?