【问题标题】:Time conditional formatting时间条件格式
【发布时间】:2016-11-16 20:13:29
【问题描述】:

我正在尝试创建一个电子表格,其中一个单元格将根据从记录的时间粘贴的时间变为绿色然后变为黄色而不是红色。我正在使用:

=HOUR(MOD(NOW(),1)-C2)<2  as Green

=HOUR(MOD(NOW(),1)-D1)<4  as Yellow

=HOUR(MOD(NOW(),1)-D1)>=4  as Red 

但是一切都变红了,我正在使用条件格式,单元格被格式化为HH:MM AM/PM

【问题讨论】:

  • 为什么会有 MOD()?小时返回一个数字,不知道C2或D1是什么所以很难说是什么问题
  • D1 是我更改工作表中的其他 2 个时间的单元格,以便在此处进行更改,但所有人都将 D1 视为“开始时间”,需要根据数量更改颜色时间像红色一样过去了“4小时过去了”
  • D1 包含时间吗?或者它是否包含格式化为仅显示时间部分的日期/时间?而且,如果它包含日期/时间,如果它是 27 小时前的,你想使用什么颜色? (或者 D1 是否包含一个看起来像时间的文本字符串?)

标签: excel


【解决方案1】:

我可以复制您的问题的唯一方法是 D1 是否包含日期/时间,而不仅仅是时间。

假设您在该单元格中有一个日期/时间,即 2016 年 11 月 17 日上午 6:50(以 HH:MM AM/PM 格式显示为“06:50 AM”)并说现在是 2016 年 11 月 17 日上午 7:59。

您的计算将尝试计算 0.28472222(1900 年 1 月 0 日上午 6:50 的数值)减去 42691.33264(2016 年 11 月 17 日上午 7:59 的数值)的 HOUR。 HOUR(-42691.04792) 发出 #NUM! 错误(因为负值对日期/时间计算无效)并且会给您的条件格式带来问题。

如果您确实在单元格 D1 中有日期/时间(即使它被格式化为仅显示时间部分),那么您可以使用以下公式如果您希望 27 小时的经过时间显示为红色:

=(NOW()-D1)*24<2    as Green
=(NOW()-D1)*24<4    as Yellow
=(NOW()-D1)*24>=4   as Red

如果您希望 27 小时的经过时间被视为与 3 小时相同并格式化为黄色,请使用以下公式:

=HOUR(NOW()-D1)<2    as Green
=HOUR(NOW()-D1)<4    as Yellow
=HOUR(NOW()-D1)>=4   as Red

【讨论】:

  • 谢谢你知道了。即使过去 24 小时,部门也希望工作表能够反映出来。
【解决方案2】:

将其分解为多个部分,以确保函数的每个部分都按预期运行。我不完全确定你的目标是什么,但我已经分解了你的例子的每一部分。使用此信息,您应该能够看到输出不正确的位置并修复逻辑。让我知道它是否有帮助,但你还不在那里。

你有什么:

外汇:=NOW()

输出:11/16/2016 15:16

外汇:=MOD(NOW(),1)

输出:1/0/1900 15:16

外汇:=HOUR(MOD(NOW(),1))

输出:15

外汇:=HOUR(MOD(NOW(),1)-D1)

输出:15 - HOUR(D1)(作为数字)

15 - HOUR(D1) 是您希望在比较中使用的数字吗?如果没有,你的逻辑就有错误。如果是这样,您的条件格式可能有错误。

HTH,让我们知道你的想法。

杰克逊

编辑:

  • 更正了第二个公式行中的 =MOD(NOW(),1)

【讨论】:

  • OP 使用的是MOD(NOW(),1),而不是MOD(NOW())MOD(NOW(),1) 将忽略日期/时间的日期部分,只留下时间部分。
  • 这是上面的错字,我已经更正为=MOD(NOW(),1)。话虽如此,我不熟悉将 MOD 函数与日期一起使用。为什么不直接使用=HOUR(NOW()-D1) 而不是=HOUR(MOD(NOW(),1)-D1)HOUR(MOD(NOW(),1) 什么时候不等于 HOUR(NOW())
  • 我几乎在我留下评论的同时注意到您的编辑 - 但我留下评论指出MOD(NOW(),1) 只是剥离 NOW() 的日期部分,主要是因为您的评论是它会返回一个无意义的值。就个人而言,我不会使用MOD(NOW(),1),但有些人更喜欢明确地将其转换为时间,因为这是他们的想法。我也不喜欢在时间跨度上使用HOUR(我只使用时间跨度*24),但如果您想排除时间跨度的经过天数部分(即它可以节省执行 MOD 24),它会很有用。跨度>
  • 有趣的是,它将日期剥离为日期的“零值”。如果将MOD(NOW(),1) 的结果乘以一个大整数,它仍然会将日期部分与时间相关联,将天数计为“数百”(其中分钟和小时分别为 1 秒和 10 秒)。我同意您的回答,即简单地省略MOD(NOW(),1) 并直接使用HOUR 功能。现在,如果他可以为您接受... :)
猜你喜欢
  • 2022-11-10
  • 1970-01-01
  • 2017-05-21
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多