使用小时值进行条件格式设置

时间:2015-03-12 05:04:41

标签: google-sheets gs-conditional-formatting

我正在尝试创建一个条件格式公式,以便在比较 HOUR 值的两列中应用。作为一个例子,我有三行电子表格(实际电子表格的链接是here):

   |     A     |     B    |    C    |   D    |
1  |   14:00   |   02:00  |  12:00  |  12:00 | 
2  |   15:30   |   16:30  |  01:00  |  01:00 |
3  |   08:30   |   09:30  |  01:00  |  01:00 |

第1步: C 列是减法的结果:B - A.因为我正在使用小时值(不是日期和小时,也不是日期,只有小时)我在C栏上使用了一个公式:

      =(B1-A1) + IF(B1 < A1; 1)

这个公式基本上计算B - A,如果B比A小“(它实际上是第二天的时间跨度),它会增加1,否则我的结果将是负数小时。 (关于here的更多信息。)

第2步: D 列是插入的值(不是任何公式的结果),整列的格式为(小时)。

第3步:我创建了一个条件格式规则,用于将 C 列上的值与 D 列上的值进行比较。如果它们不同, C 列上的单元格应涂成绿色:

=C1<>D1 on the interval C1:C1000

步骤问题:

C1 单元格未绘制,因为其值与 D1 (均为12:00)相同。
C2 也不会被绘制,因为它的值与 D2 相同(均为01:00)。 C3已经,即使其值(01:00)与 D3 01:00)相同!

这种行为只会在电子表格上随机重复。

我对它进行了很多研究,甚至在Excel上进行了测试,发现它的工作方式就像魅力一样。但是在Google Spreadsheets中我得到了这种奇怪的行为。

2 个答案:

答案 0 :(得分:1)

非常混乱,但幸运的是很容易修复(我想!)。请尝试:

=round(D1;14)<>round(C1;14)

而非=D1<>C1

答案 1 :(得分:0)

您看到的行为是Google表格&#39;处理floating point错误(你可以说Excel在这方面做得更好,因为它会更频繁地掩盖这些错误)。

您可以通过将列C和D的格式更改为数字来查看正在发生的事情,并将显示的小数位数增加到大约16(使用.00->按钮),您将看到差异

解决方法是对计算数据执行一些舍入,这说起来容易做起来难。如果列D仅包含包含整个分钟的时间,则可以使用:

=ROUND((B1-A1+IF(B1<A1;1))*1440)/1440

偶然可以缩短为

=ROUND(MOD(B1-A1;1)*1440)/1440