![两个不同单元格中的时间值相同,但十进制值不同,无法匹配](https://linux22.com/image/1403156/%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%AD%E7%9A%84%E6%97%B6%E9%97%B4%E5%80%BC%E7%9B%B8%E5%90%8C%EF%BC%8C%E4%BD%86%E5%8D%81%E8%BF%9B%E5%88%B6%E5%80%BC%E4%B8%8D%E5%90%8C%EF%BC%8C%E6%97%A0%E6%B3%95%E5%8C%B9%E9%85%8D.png)
我正在尝试对两个不同的单元格执行索引匹配函数,其中的时间值为 08:30:00。我始终没有找到匹配项,经过长时间的搜索,我发现两个单元格的值之间只有微小的差异。顺便说一下,它们位于两个不同的列中,但似乎具有相同的格式。对此有任何合理的解释吗?有没有什么方法可以避免这种情况?
08:30:00
one cell decimal value 0,35416666666666700
other cell decimal value 0,35416666666666600
答案1
您可以使用该ROUND
函数使时间与您喜欢的增量相匹配。因此,如果您想将时间匹配到最接近的 1/1000 秒,请将时间值四舍五入到第 8 位。例如=ROUND(A1,8)
。您应该能够在比较的两边使用 Round 公式来获得匹配。
您的样本=ROUND(0,35416666666666700,8)=ROUND(0,35416666666666600,8)
应该返回 True。
答案2
您也许可以使用该函数将时间转换为文本TEXT
,然后将结果格式化回时间:
=TIME(A1, "hh:mm:ss")*1
这样就应该能消除所有细微的差别。
将其应用于您正在查找和匹配值的列。
答案3
Excel 不能使用超过毫秒(0.001 秒)的时间值。也就是说,小数点后 13 位是四舍五入后的值,之后的位数对四舍五入没有意义。
因此,您始终可以四舍五入到小数点后 13 位,而不会丢失任何可用的精度。
(当然,如果将其作为存储时间和日期(在本例中不是)那么这些数字将会降低 Excel 区分秒或十分之一、百分之一和千分之一秒的深度,所以你会失去三个有效位,而且我还没有弄清楚相对于秒的细分,这会把你放在哪里。)