在时间范围内匹配索引匹配公式

Index match formula matching within a time range

提问人:Aninda 提问时间:10/12/2023 最后编辑:Mayukh BhattacharyaAninda 更新时间:10/13/2023 访问量:75

问:

我有 2 张桌子 -

表1

日期时间 名字
09/04/2023 11:25:00
09/05/2023 11:20:00
09/06/2023 11:30:00
09/07/2023 11:30:00
09/08/2023 1:30:00
09/09/2023 12:00:00
09/10/2023 8:58:00

表2

日期时间 名字
09/05/2023 10:55:00 卡里姆
09/07/2023 10:30:00 卡里姆
09/06/2023 11:35:00 拉希姆
09/07/2023 10:30:00 拉里姆
09/04/2023 11:25:00 亚历克斯

我想将这两个表结合起来,如果列和列之间的差异约为 30 分钟。Datetimetable 1Datetimetable 2

我的表格应该看起来像

日期时间 名字
09/04/2023 11:25:00 亚历克斯
09/05/2023 11:20:00 卡里姆
09/06/2023 11:30:00 拉希姆
09/07/2023 11:30:00 不存在
09/08/2023 1:30:00 不存在
09/09/2023 12:00:00 不存在
09/10/2023 8:58:00 不存在
Excel 日期时间 excel-公式 匹配

评论


答:

3赞 Tom Sharpe 10/12/2023 #1

尝试

=XLOOKUP(1,(@[Datetime]>Table2[Datetime]-1/48)*(@[Datetime]<Table2[Datetime]+1/48),Table2[Name],"Not present")

enter image description here

解释

该公式位于表 1 第一行的“名称”下。

@[Datetime]引用 Datetime 列中同一行中的值,其中包含09/04/2023 11:25:00

Table2[Datetime]-1/48在表 2 的 Datetime 列中创建一个值数组,但减去半小时(一天的 1/48)。

(@[Datetime]>Table2[Datetime]-1/48)将表 1 中的 datetime 与上一步中生成的数组中的所有日期时间进行比较,并创建这些值的 true/false 数组,如下所示

F F F F T

(@[Datetime]<Table2[Datetime]+1/48)执行与上一个表达式相同的操作,但在表 2 中的日期时间中添加了半小时,给出了另一个数组,如下所示

哒哒

(@[Datetime]>Table2[Datetime]-1/48)*(@[Datetime]<Table2[Datetime]+1/48)意味着真/假数组是 AND 在一起的(但在使用数组时,您必须使用 *,乘法运算符,结果是一个数字、1 或零)来给出

0 0 0 0 1

现在,您可以将所有这些输入到 Xlookup,它将在数组中查找“1”的第一个匹配项,并从表 2 中返回相应的名称,在本例中为“Alex”,除非没有匹配项,在这种情况下它将返回“不存在”。

由于公式已输入到表中,因此将自动将其复制到表的所有行,在每种情况下,在表 1 的“名称”列中每个单元格左侧的单元格中选择日期时间。

请注意,@DS_London建议的公式删除了创建两个数组并将它们组合在一起的步骤,而是创建了一个数组

F F F F T

然后在此数组中查找值“True”。

评论

2赞 DS_London 10/12/2023
也许更简洁一点?=XLOOKUP(TRUE,ABS([@Datetime]-Table2[Datetime])<=(30/(24*60)),Table2[Name],"not present")
0赞 Aninda 10/13/2023
你能解释一下公式吗?我是 Excel @Tom 的新手
0赞 Tom Sharpe 10/13/2023
是的,我会在我的回答中添加一个解释。