INDEX + MATCH 函数返回错误值

INDEX + MATCH 函数返回错误值

我在 Excel 2013 中有一个电子表格,它使用INDEXandMATCH函数按间隔时间(以 为单位I4)进行搜索,以从匹配的相应行(以 为单位A)中提取值。除了三行之外,它在所有其他行上都按预期工作 - 在那些有问题的行上,它实际上返回了上面单元格的值。

我正在使用以下代码:

=INDEX(B:B, (MATCH($I$4, A:A)))

我用来搜索间隔时间的值位于单元格中I4(例如,上午 10:00),与其匹配的列是A:A。我尝试返回的值位于中B:B

间隔时间列的范围是A2- A37(上午 6:00 - 晚上 11:30,以半小时为增量),我想要返回的值的范围是B2- B37

所有值均正确返回,但搜索A4A7A10(分别为 7:00 AM、8:30 AM 和 10:00 AM)中的值时除外,这些值会显示高于所需值的单元格的数据(即,当I4 = 7:00 AM(等于A4)时,公式返回 的值B3而不是B4,  I4 = 8:30 AM(A7)→B6而不是B7,以及I4 = 10:00 AM(A10)→B9而不是B10)。

当我尝试使用完全匹配时:

=INDEX(B:B, (MATCH($I$4, A:A, 0)))

它为问题行返回值 #N/A,而仅为其他一些行返回正确值。

对正在发生的事情有什么了解吗?

答案1

我认为@fixer1234 是正确的——这是浮点舍入误差 关于时间价值。我不完全明白发生了什么,但我能够在我的系统上重现它,我找到了一个解决方法:将公式更改为

=INDEX(B:B, MATCH($I$4+TIME(0,0,1), A:A))

这会将一秒(TIME(0,0,1);参数为)添加到值中;这似乎足以让它“过关斩将”,以便测试为 ≥ (或或)中的值。顺便说一句,我尝试了,但显然不会遵守秒的小数部分,因此它只是将其视为;即,只是纯零。如果要获得毫秒,可以使用。TIME(hours,minutes,seconds)I4A4A7A10TIME(0,0,0.9)TIME()TIME(0,0,0)TIME(0,0,1)*0.001

PS:您的公式中有一对不必要的括号;我已将其删除。

相关内容