如何将非时间文本值转换为正确时间

如何将非时间文本值转换为正确时间

我的电子表格有如下时间值::
15
:00:23
:47:15

Excel 不会将这些视为实际时间值,而是将其值作为文本返回。因此,数学函数将不起作用,因为 Excel 不会将它们视为数字。
如何将这些值转换为正确的数字,是否可以不使用 VBA 来完成此操作?

答案1

正确构造的嵌套IF语句集应该可以处理这个问题:

Excel 片段

公式如下:

=IF(LEFT(C7,1)=":",IF(ISERROR(FIND(":",C7,2)),TIMEVALUE("0:0"&C7),TIMEVALUE("0"&C7)),C7)

怎么运行的:

  • 外部条件IF(LEFT(C7,1)=":",...)利用了所有畸形值都以冒号开头的事实。

    • 如果第一个字符不是冒号,那么该值就可以按原样报告:C7
    • 如果第一个字符冒号,则控制权将传递给内部条件。
  • 如上所述,内部条件IF(ISERROR(FIND(":",C7,2),...)仅在冒号确实作为第一个字符时才激活。然后,它会尝试在字符串的其余部分中查找冒号。根据行为函数中FIND,如果没有找到冒号,则#VALUE!返回错误,并由ISERROR
  • 如果FIND返回错误,则必须将零小时和零分钟的数字添加到字符串前面:"0:0"&C7
  • 如果FIND返回一个数字,则会出现另一个冒号,并且只需在前面添加零时数字:"0"&C7
  • TIMEVALUE在所有情况下都用于确保时间值字符串实际上被解释为时间值。

相关内容