Excel 一列的多个自定义日期格式?

Excel 一列的多个自定义日期格式?,excel,excel-formula,Excel,Excel Formula,我们可以在一列中设置自定义时间的OR命令吗? 我在excel的一列中有多种时间格式。例如: Timing 30 min 31 sec 4 min 20 sec 1 hr 2 min 3 hr 1 hr 23 min 30 sec 我想把它转换成时间格式:hh:mm:ss,这样我就可以计算所有时间的平均值。我怎样才能做到呢?这个巨大的公式对我很有用: =IF(AND(IFERROR(FIND("hr";A1;1);0)>0;IFERROR(FIND("min";A1;1);0)>

我们可以在一列中设置自定义时间的OR命令吗? 我在excel的一列中有多种时间格式。例如:

Timing
30 min
31 sec
4 min 20 sec  
1 hr 2 min
3 hr
1 hr 23 min 30 sec

我想把它转换成时间格式:
hh:mm:ss
,这样我就可以计算所有时间的平均值。我怎样才能做到呢?

这个巨大的公式对我很有用:

=IF(AND(IFERROR(FIND("hr";A1;1);0)>0;IFERROR(FIND("min";A1;1);0)>0;IFERROR(FIND("sec";A1;1);0)>0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)>0;IFERROR(FIND("min";A1;1);0)>0;IFERROR(FIND("sec";A1;1);0)=0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(A1)&" 00 sec";" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)=0;IFERROR(FIND("min";A1;1);0)>0;IFERROR(FIND("sec";A1;1);0)>0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("00 hr " & TRIM(A1);" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)>0;IFERROR(FIND("min";A1;1);0)=0;IFERROR(FIND("sec";A1;1);0)=0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(A1)&"00 min 00 sec";" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)=0;IFERROR(FIND("min";A1;1);0)>0;IFERROR(FIND("sec";A1;1);0)=0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("00 hr " & TRIM(A1)&" 00 sec";" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");IF(AND(IFERROR(FIND("hr";A1;1);0)=0;IFERROR(FIND("min";A1;1);0)=0;IFERROR(FIND("sec";A1;1);0)>0);TEXT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("00 hr 00 min "&TRIM(A1);" ";"");"hr";":");"min";":");"sec";"");"hh:mm:ss");"Formula needs to be updated"))))))
正如我所说,你需要检查文本中的每个字符串。根据它是否包含
hr、min、sec
,您需要计算时间,然后将其转换为时间。此外,您还需要处理一些字符串末尾的恼人空格。这个公式可以做到这一切

希望你能根据自己的需要来调整。我的Excel是西班牙语的,但我手动翻译了公式。为了防止键入错误,我将一个文件示例上载到Gdrive,供您下载并检查公式(如果您打开公式,它们将自动转换)


这里有一个简短的公式:

=TIME(IF(IFERROR(FIND("hr";$A2);0)=0;0;IFERROR(MID($A2;IFERROR(FIND("hr";$A2);0)-3;2);MID($A2;IFERROR(FIND("hr";$A2);0)-2;1)));IF(IFERROR(FIND("min";$A2);0)=0;0;IFERROR(MID($A2;IFERROR(FIND("min";$A2);0)-3;2);MID($A2;IFERROR(FIND("min";$A2);0)-2;1)));IF(IFERROR(FIND("sec";$A2);0)=0;0;IFERROR(MID($A2;IFERROR(FIND("sec";$A2);0)-3;2);MID($A2;IFERROR(FIND("sec";$A2);0)-2;1))))
注意:上面的公式包含分号(;)作为分隔符。替换为coma(,),以防这是系统分隔符

老实说,我没有试图破译@Foxfire的公式

记住对结果单元格应用自定义时间格式:[h]:mm:ss

有关解释原因,请参见长公式的分解:

到目前为止,您都尝试过什么?我尝试过在excel中添加自定义格式,但似乎一次只有一列符合一种自定义格式。恐怕您需要VBA使用宏来实现这一点。没有其他简单的替代方法吗?您需要使用Trim、Replace、,我不知道为什么,但是我得到的输出是:30分钟hh:30:00你使用的值是多少?确保应用公式的单元格具有正确的格式。我已将时间格式用于输出单元格。我刚刚下载了您的工作表,并且显示了hh中所有单元格的ouptut:。示例:1小时2分钟hh:02:00在我提供的文件中,结果与我的屏幕截图完全相同。您现在想做什么?我正在使用excel 2016,可能版本与输出有关,不确定。抱歉,我认为我使用的excel不支持[h]:mm:ss。此外,我在你的公式中的“hr”附近出现了错误。你说不支持是什么意思?你会得到什么错误?它只是表明公式有问题,并在“hr”处带上标记。你能和我分享你的工作表吗?也许是Gdrive?当然是:)@kajalp,我拒绝了你的编辑,并添加了一条与公式中使用的系统分隔符相关的注释。两者都是正确的:(;)和(,)。这取决于系统设置:)