提问人:Aninda 提问时间:10/12/2023 最后编辑:Mayukh BhattacharyaAninda 更新时间:10/13/2023 访问量:75
在时间范围内匹配索引匹配公式
Index match formula matching within a time range
问:
我有 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 分钟。Datetime
table 1
Datetime
table 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 | 不存在 |
答:
尝试
=XLOOKUP(1,(@[Datetime]>Table2[Datetime]-1/48)*(@[Datetime]<Table2[Datetime]+1/48),Table2[Name],"Not present")
解释
该公式位于表 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”。
评论
=XLOOKUP(TRUE,ABS([@Datetime]-Table2[Datetime])<=(30/(24*60)),Table2[Name],"not present")
评论