我正在尝试创建一个条件格式公式,以便在比较 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中我得到了这种奇怪的行为。
答案 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