比较两个日期/时间和容差

时间:2014-08-12 20:54:36

标签: excel excel-formula

基本上,我有两列数据,我想知道A列中的给定值是否与某个delta值中的B列中的任何值匹配。

我不认为一个近似的VLOOKUP会在这里做到这一点。值是日期和时间(如8/12/14 1:43:02 PM),我希望delta值<15秒。

因此,如果A18/12/14 1:43:02 PMB1568/12/14 1:43:08 PM,则返回布尔值。

2 个答案:

答案 0 :(得分:1)

由于评论往往很长,所以这是一个很长的评论或简短的答案。

要比较时间戳,您可以编写=ABS(A1-B1)<1/5760。数字转换是自动的,1/5760=15/86400或15秒,考虑到Excel,一天等于1。

以下是A列中一个值的示例。

enter image description here

我的Excel是法语,VRAI表示TRUE。日期/时间格式可能与您的格式不同,但它只是可视化的。

在英语中,公式为:

  • C1:=MATCH(A1,$B$1:$B$21)
  • D1:=INDEX($B$1:$B$21,C1)
  • E1:=INDEX($B$1:$B$21,C1+1)
  • F1:=OR(ABS(D1-A1)<1/5760,ABS(E1-A1)<1/5760)

当然,你真的不需要4列来做这件事,但它更容易理解。

另请参阅MATCH函数的帮助: MATCH查找小于或等于lookup_value的最大值。 lookup_array参数中的值必须按升序放置

所以你得到之前的值的索引,你必须测试这个值(OR和D1的第一部分)和下一个值(第二部分和E1)。

答案 1 :(得分:0)

试试这个数组公式:

=IFERROR(MATCH(TRUE,ABS(A2-TIME_RANGE)<EQ_15_SEC,0),"not found")

这将返回B列中满足15秒规则的项目索引,或“未找到”。

TIME_RANGE是您要检查的一个值范围,例如B列

A2是此行中A列的候选对象。你可以填写公式。

EQ_15_SEC只指向我进行计算的单元格=15/60/60/24

这是一个数组公式,所以按 Ctrl + Shift + Enter (不仅仅是 Enter