索引/匹配时间匹配错误

时间:2016-01-05 03:22:20

标签: excel-formula

我使用index/match使用date/times匹配INDEX(D:D,MATCH(A2,B:B,0))来提取数据 已手动输入A:A的{​​{1}}列。 date/times的{​​{1}}列B:B输入为date/times并向下复制。

在3行后,公式给出B2+time(,30,)作为答案。

它与时间不完全匹配有关,即使#N/A给出A5=B5结果,行提供true 如果我将#N/A复制到A:A,即所有手动输入的时间,它都能完美运行。 请帮忙。

B:B

2 个答案:

答案 0 :(得分:0)

我将离开@AxelRichter在他的评论中发布答案,其中包括舍入时间戳并引用舍入数字以避免浮点精度。

另一种解决方案是简单地允许VLOOKUP / MATCH使用每个函数中的最后一个参数来获取“最接近的值”结果。即:

=INDEX(D:D,MATCH(A2,B:B,1))

请注意,这仅适用于您的数据已排序的情况。它还有一个额外的好处,如果一个缺失的结果自然应该是下一个最接近的行,那么该行就会被拾取 - 同样它还有额外的成本,当找不到匹配时它不会发出警告。

答案 1 :(得分:0)

这是浮点精度的问题。正如您所看到的那样,=比较因1/8/15 14:00 42012,583333333342012,5833333334而失败。与MATCH(..,0)VLOOKUP(.., FALSE)的完全匹配使用其他比较方法,因此更频繁地失败。如果我们需要完全匹配的日期时间值,那么我们需要这些值ROUND ed相同的小数位数。所以我们需要辅助列ROUND的A和B到8位小数,然后使用MATCH(..,0)VLOOKUP(.., FALSE)中的辅助列。

至少需要一个辅助列,因为我们可以直接在函数内舍入查找值。但是查找数组我们不能这样做。

示例:

enter image description here

公式:

B3向下:

=B2+TIME(0,30,0)

C2向下:

=A2=B2

D2向下:

=MATCH(B2,A:A,0)

E2向下:

=MATCH(ROUND(B2,8),G:G,0)

G2向下:

=ROUND(A2,8)