比较两个date/时间与宽容
本质上,我有两列的数据,我想知道列A中给定的值是否与列B中的任何值在一定的增量值内匹配。
我不认为一个近似的VLOOKUP会在这里做的伎俩。 值是一天的date和时间(如8/12/14 1:43:02 PM
),我希望增量值<15秒。
所以如果A1
是8/12/14 1:43:02 PM
而B156
是8/12/14 1:43:08 PM
,则返回一个布尔值。
由于评论往往会变长,所以这里是一个很长的评论,或者一个简短的回答。
要比较时间戳,可以写=ABS(A1-B1)<1/5760
。 数字转换是自动的, 1/5760=15/86400
,或15秒,考虑到Excel,一天等于1。
这里是一个例子,列A中的一个值
我的Excel是法文, VRAI
是TRUE
。 date/时间格式可能与您的date/时间格式不同,但只是可视化的。
在英文中,公式是:
- 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参数中的值必须按照升序排列 。
所以你得到了之前的值的索引,你必须testing这个值( OR
第一部分,D1)和下一个值(第二部分,和E1)。
试试这个数组公式:
=IFERROR(MATCH(TRUE,ABS(A2-TIME_RANGE)<EQ_15_SEC,0),"not found")
这将返回满足15秒规则的列B中的项目的索引或“找不到”。
TIME_RANGE
是你想要检查的值的一个范围,比如B列
A2
是该行A列的候选人。 你可以填写公式。
EQ_15_SEC
只是指向一个细胞,我做了计算=15/60/60/24
EQ_15_SEC
这是一个数组公式,所以按Ctrl + Shift + Enter (不只是input )