Excel formula 索引/匹配时间匹配错误
我正在使用Excel formula 索引/匹配时间匹配错误,excel-formula,Excel Formula,我正在使用index/match通过使用index(D:D,match(A2,B:B,0))匹配date/times来提取数据 A:日期/时间的列已手动输入。 B:B日期/时间的列作为B2+时间(,30,)输入并向下复制 在3行之后,公式给出了#N/A作为答案 这与时间不完全匹配有关,即使A5=B5给出了行给出的true结果#N/a 如果我将A:A复制到B:B中,即所有手动输入的时间,它工作正常。 请帮忙 A B C D E
index/match
通过使用index(D:D,match(A2,B:B,0))匹配date/times来提取数据
A:日期/时间的
列
已手动输入。
B:B
日期/时间的列
作为B2+时间(,30,)
输入并向下复制
在3行之后,公式给出了#N/A
作为答案
这与时间不完全匹配有关,即使A5=B5
给出了行给出的true
结果#N/a
如果我将A:A
复制到B:B
中,即所有手动输入的时间,它工作正常。
请帮忙
A B C D E F G H I J K
AET Entered AET + 30 = volts lo i1 i0 vl1 vl0 Value AET Value Time +30
1/08/15 10:00 1/08/15 10:00 TRUE 36 36 36 36 36 36 42217.4166666667000 42217.4166666667000
1/08/15 10:30 1/08/15 10:30 TRUE 23 23 23 23 23 23 42217.4375000000000 42217.4375000000000
1/08/15 11:00 1/08/15 11:00 TRUE 44 44 44 44 44 44 42217.4583333333000 42217.4583333333000
1/08/15 11:30 1/08/15 11:30 TRUE 55 44 44 #N/A 44 #N/A 42217.4791666667000 42217.4791666667000
1/08/15 12:00 1/08/15 12:00 TRUE 13 55 55 #N/A 55 #N/A 42217.5000000000000 42217.5000000000000
1/08/15 12:30 1/08/15 12:30 TRUE 32 13 13 #N/A 13 #N/A 42217.5208333333000 42217.5208333333000
1/08/15 13:00 1/08/15 13:00 TRUE 56 32 32 #N/A 32 #N/A 42217.5416666667000 42217.5416666667000
1/08/15 13:30 1/08/15 13:30 TRUE 70 56 56 #N/A 56 #N/A 42217.5625000000000 42217.5625000000000
1/08/15 14:00 1/08/15 14:00 FALSE 43 70 70 #N/A 70 #N/A 42217.5833333333000 42217.5833333334000
1/08/15 14:30 1/08/15 14:30 TRUE 31 43 43 #N/A 43 #N/A 42217.6041666667000 42217.6041666667000
1/08/15 15:00 1/08/15 15:00 TRUE 21 31 31 #N/A 31 #N/A 42217.6250000000000 42217.6250000000000
1/08/15 15:30 1/08/15 15:30 FALSE 11 21 21 #N/A 21 #N/A 42217.6458333333000 42217.6458333334000
1/08/15 16:00 1/08/15 16:00 TRUE 66 11 11 #N/A 11 #N/A 42217.6666666667000 42217.6666666667000
1/08/15 16:30 1/08/15 16:30 TRUE 45 66 66 #N/A 66 #N/A 42217.6875000000000 42217.6875000000000
1/08/15 17:00 1/08/15 17:00 FALSE 23 45 45 #N/A 45 #N/A 42217.7083333333000 42217.7083333334000
我将让@AxelRichter在他的评论中发布答案,其中包括对时间戳进行四舍五入,并引用四舍五入的数字以避免浮点精度
另一种解决方案是简单地允许VLOOKUP/MATCH使用每个函数中的最终参数获取“最近值”结果。即:
=INDEX(D:D,MATCH(A2,B:B,1))
请记住,只有对数据进行了排序,这才有效。它还有一个额外的好处,那就是如果一个缺失的结果自然应该是下一个最近的行,那么该行就会被选中——同样,它还有一个额外的代价,那就是当没有找到匹配项时,它不会警告您。我会让@AxelRichter在他的评论中发布答案,这涉及到对时间戳进行舍入并引用舍入的数字以避免浮点精度
另一种解决方案是简单地允许VLOOKUP/MATCH使用每个函数中的最终参数获取“最近值”结果。即:
=INDEX(D:D,MATCH(A2,B:B,1))
请记住,只有对数据进行了排序,这才有效。它还有一个额外的好处,即如果缺少的结果自然应该是下一个最近的行,则该行将被拾取—同样,它还有一个额外的代价,即当未找到匹配项时,它不会向您发出警告。这是一个浮点精度问题。如您所见,与420125833333
和420125833334
相比,即使=比较也会失败。与MATCH(..,0)
或VLOOKUP(..,FALSE)
的精确匹配使用了另一种比较方法,因此更容易失败。如果我们需要精确匹配的日期时间值,那么我们需要将这些值四舍五入
设置为相同的小数计数。因此,我们需要将A和B四舍五入到8位小数的辅助列,然后在匹配(..,0)
或VLOOKUP(..,FALSE)
中使用这些辅助列
至少需要一个helper列,因为我们可以直接在函数中取整查找值。但是查找数组不能用这种方式进行取整
例如:
公式:
B3
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
C2
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
D2
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
E2
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
G2
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
这是浮点精度的问题。如您所见,与420125833333
和420125833334
相比,即使=比较也会失败。与MATCH(..,0)
或VLOOKUP(..,FALSE)
的精确匹配使用了另一种比较方法,因此更容易失败。如果我们需要精确匹配的日期时间值,那么我们需要将这些值四舍五入
设置为相同的小数计数。因此,我们需要将A和B四舍五入到8位小数的辅助列,然后在匹配(..,0)
或VLOOKUP(..,FALSE)
中使用这些辅助列
至少需要一个helper列,因为我们可以直接在函数中取整查找值。但是查找数组不能用这种方式进行取整
例如:
公式:
B3
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
C2
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
D2
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
E2
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
G2
向下:
=B2+TIME(0,30,0)
=A2=B2
=MATCH(B2,A:A,0)
=MATCH(ROUND(B2,8),G:G,0)
=ROUND(A2,8)
你能给前几行的数据采样吗?我只是编辑我的问题并粘贴数据吗?这是一个浮点精度的问题。正如您所看到的,与420125833333
相比,420125833334
,即使是=
比较也会失败。与MATCH(..,0)
或VLOOKUP(..,FALSE)
的精确匹配使用了另一种比较方法,因此更容易失败。如果我们需要精确匹配的日期时间值,那么我们需要将这些值四舍五入
设置为相同的小数计数。所以我们需要两个helper列,将A
和B
四舍五入到8位小数,然后在匹配(..,0)
或VLOOKUP(..,FALSE)
@AxelRichter中使用这些helper列-也许可以将您的评论作为解决方案发布?谢谢您的帮助。我确实尝试在索引/匹配公式中使用round函数,但无法使其工作。能否为前几行提供数据采样?我是否只需编辑问题并粘贴数据?这是一个浮点精度问题。正如您所看到的,与420125833333
相比,420125833334
,即使是=
比较也会失败。与MATCH(..,0)
或VLOOKUP(..,FALSE)
的精确匹配使用了另一种比较方法,因此更容易失败。如果我们需要精确匹配的日期时间值,那么我们需要将这些值四舍五入
设置为相同的小数计数。所以我们需要两个helper列,将A
和B
四舍五入到8位小数,然后在匹配(..,0)
或VLOOKUP(..,FALSE)
@AxelRichter中使用这些helper列-也许可以将您的评论作为解决方案发布?谢谢您的帮助。我确实尝试过在索引/匹配公式中使用round函数,但我无法让它发挥作用。谢谢,是的,我发现查找和vlookup可以按照您建议的方式工作,可以填充缺失的数据,这在大多数情况下对我都有效。然而,我确实需要能够看到有多少数据丢失,以评估它是否会对结果产生影响