Excel - 根据条件查找最近的日期

问题描述 投票:0回答:1

我希望有人能给我一个解决我试图解决的Excel问题的问题。

我有两张桌子。一个称为SENSOR,另一个称为CARD

1 - 表SENSOR在一列中有日期/时间,在另一列中有员工ID - 表CARD在一列中有日期/时间,在另一列有一个员工ID

唯一完全匹配的是员工ID。表SENSOR的日期/时间与表CARD不完全匹配(通常为几分钟加或减)。我需要做的是在单元格C1上返回表CARD中的日期/时间列,这是从SENSOR表中的日期/时间列中找到的最近时间。

表传感器:

A栏:日期/时间 11/3/17 10:48 11/3/17 16:02 11/10/17 7:09 11/13/17 20:58 11/15/17 21:24 11/16/17 11:32

B栏:员工ID 7164 7165 7166 7163 7167 7163

表卡:

第一栏:日期/时间 11/3/17 16:05 11/10/17 7:10 11/13/17 21:04 17/15/17 21:30 11/16/17 11:40 11/3/17 10:45

COLUMN J:员工ID 7165 7166 7163 7167 7163 7164

这是我正在尝试做的事情(它实际上适用于其中一些,但在其他一些它只是不起作用,我无法理解为什么):

C1 = INDEX(I $ 2:I $ 285,MATCH(MIN(I $ 2:I $ 285-A16)),(J $ 2:J $ 285 = B16)* ABS(I $ 2:I $ 285-A16),0))

感谢你们

excel date indexing match criteria
1个回答
1
投票

既然你提到TABLES我使用TABLES和结构化参考。从长远来看,使事情变得容易一些。但是,如果需要,您应该能够转换为直接引用。

这是公式:

=LOOKUP(2,1/(AGGREGATE(15,6,(ABS(([@[EMPLOYEE ID]]=CARD[EMPLOYEE ID])*
CARD[DATE/TIME]-[@[DATE/TIME]])),1)=ABS(([@[EMPLOYEE ID]]=CARD[EMPLOYEE ID])*
CARD[DATE/TIME]-[@[DATE/TIME]])),CARD[DATE/TIME])
  • 将Sensor中的员工ID与卡中的员工ID进行比较
  • 返回匹配日期时间或零的数组(如果不匹配)
  • 从当前行中的日期/时间中减去并返回ABS值
  • 使用LOOKUP,返回与最小(ABS)差异处于同一位置的最后一次。
  • AGGREGATE函数用于避免处理错误值。它还允许避免使用ctrl + shift + enter作为数组公式。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.