我使用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
答案 0 :(得分:0)
我将离开@AxelRichter在他的评论中发布答案,其中包括舍入时间戳并引用舍入数字以避免浮点精度。
另一种解决方案是简单地允许VLOOKUP / MATCH使用每个函数中的最后一个参数来获取“最接近的值”结果。即:
=INDEX(D:D,MATCH(A2,B:B,1))
请注意,这仅适用于您的数据已排序的情况。它还有一个额外的好处,如果一个缺失的结果自然应该是下一个最接近的行,那么该行就会被拾取 - 同样它还有额外的成本,当找不到匹配时它不会发出警告。
答案 1 :(得分:0)
这是浮点精度的问题。正如您所看到的那样,=比较因1/8/15 14:00
42012,5833333333
与42012,5833333334
而失败。与MATCH(..,0)
或VLOOKUP(.., FALSE)
的完全匹配使用其他比较方法,因此更频繁地失败。如果我们需要完全匹配的日期时间值,那么我们需要这些值ROUND
ed相同的小数位数。所以我们需要辅助列ROUND
的A和B到8位小数,然后使用MATCH(..,0)
或VLOOKUP(.., FALSE)
中的辅助列。
至少需要一个辅助列,因为我们可以直接在函数内舍入查找值。但是查找数组我们不能这样做。
示例:
公式:
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)