比较excel中格式化为文本的时间(包括负时间)

时间:2018-05-22 14:44:37

标签: datetime excel-formula excel-2007 logical-operators text-parsing

需要过滤所有负时间或时间少于20小时的行。时间长度降至-300小时。由于我导入了此数据,因此导入为=TEXT("-20:42","[h]:mm")=TEXT("3:29","[h]:mm")

创建自定义过滤器会产生0个输出。

现在,我使用此公式在表格中添加了一列

=IF(ISNUMBER(SEARCH("-*",Table15[[#This Row],[Resolve Time To Go]])),"Breech", "No Breech")

这适用于负值,但我很难在0到20小时之间拉取值。

此公式对于正值返回true,但不会在20

处停止
=IF(VALUE(Table15[[#This Row],[Resolve Time To Go]])<TIMEVALUE(20), "Breech", "No Breech")

我不介意如果我必须创建一些额外的列来获取这些数据,因为我只是将它用于数据透视表,但如果可以在1列中完成它会很好。我尝试合并这两个函数,但我得到一个弹出窗口,说有太多的逻辑语句(?)。

这最终也需要包含在宏中。

1 个答案:

答案 0 :(得分:2)

如果您在列 A 时间为文本值,则在 B1 中输入:

=IF(LEFT(A1,1)="-",-TIMEVALUE(MID(A1,2,99)),TIMEVALUE(A1))

并向下复制:

enter image description here

如上图所示,如果您只想显示大于或等于20小时的时间,请将辅助列上的AutoFilter设置为大于或等于.8333333

所有小的和负的时间都将被隐藏。

修改#1:

一旦小时数超过24小时,TIMEVALUE()变得不可靠。因此,应该使用它:

=IF(LEFT(A1,1)="-",-TIMEVALUE(MID(A1,2,99)),LEFT(A1,2)/24+RIGHT(A1,2)/(24*60))