我的电子表格有如下时间值::
15
:00:23
:47:15
Excel 不会将这些视为实际时间值,而是将其值作为文本返回。因此,数学函数将不起作用,因为 Excel 不会将它们视为数字。
如何将这些值转换为正确的数字,是否可以不使用 VBA 来完成此操作?
答案1
正确构造的嵌套IF
语句集应该可以处理这个问题:
公式如下:
=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
在所有情况下都用于确保时间值字符串实际上被解释为时间值。