【问题标题】:Comparing time in excel that's formatted as text (includes negative time)比较格式化为文本的 Excel 中的时间(包括负时间)
【发布时间】:2018-05-22 14:44:37
【问题描述】:

需要过滤所有时间为负数或时间少于 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 列中完成就更好了。我尝试合并这 2 个函数,但我得到一个弹出窗口,说有太多的逻辑语句(?)。

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

【问题讨论】:

  • 我认为你应该更直接地处理这个问题。即使用代表时间的数据透视列的数值,而不是文本值。
  • @ergohack 我确实考虑过,但我还没有弄清楚如何将这些数据重新格式化为数值(尤其是负数)=TEXT("-31:40","[h] :mm")

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


【解决方案1】:

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

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

并向下复制:

如上图所示,如果只想显示大于等于 20 小时的时间,请在 helper 列上设置 AutoFilter 大于等于 .8333333

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

编辑#1:

一旦超过 24 小时,TIMEVALUE() 就会变得不可靠。因此应该改用这个:

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

【讨论】:

  • 谢谢!这似乎有效,但最多只能使用 24 小时。输出从 -300 线性增加到 24,但在 24 之后从 0.99 跳到 0.068(我的数据集从大约 -300 到 +300 小时)
  • @FT2417 我会看看是否可以修复
  • @FT2417 查看我的EDIT#1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 2012-04-14
  • 1970-01-01
  • 2022-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多