提问人:zack_la 提问时间:7/12/2023 最后编辑:zack_la 更新时间:7/13/2023 访问量:76
如何从一个表到另一个表中的指定单元格找到最接近的列值,以确保它在给定日期或之后?
How to find the nearest value in a column from one table to a specified cell in another table ensuring it is on or after a given date?
问:
我希望有人能帮我为我的问题写一个 excel 公式。
我有两张桌子:
表A
编号 | 类型 | 日期 | 数 |
---|---|---|---|
CNWIUBETOBNSO482 | 美国广播公司 | 02 六月, 23 | 997 |
CNWIUBETOBNSO482 | ABCEX公司 | 08 六月23 | 27294 |
CNWIUBETOBNSO482 | ABCEX公司 | 10 六月,23 | 943 |
CNWIUBETOBNSO482 | ABCEX公司 | 17 六月,23 | 1000 |
CNWIUBETOBNSO482 | ABCEX公司 | 17 六月,23 | 1000 |
CNWIUBETOBNSO482 | 美国广播公司 | 25 六月,23 | 86000 |
CNWIUBETOBNSO482 | ABCEX公司 | 25 六月,23 | 4849 |
表 B.
编号 | 日期 | 基础 | 新编号 |
---|---|---|---|
CNWIUBETOBNSO482 | 01 六月23 | 29000 | |
CNWIUBETOBNSO482 | 05 六月23 | 950 | |
CNWIUBETOBNSO482 | 11 六月,23 | 999 | |
CNWIUBETOBNSO482 | 21 六月,23 | 1009 | |
CNWIUBETOBNSO482 | 21 六月,23 | 85000 | |
CNWIUBETOBNSO482 | 21 六月,23 | 4760 |
这是我想在 K 列“newnumber”中的内容:
因此,对于单元格 K1,如果出现以下情况,我希望在 D 列中具有最接近 J1 的值:
- ID 匹配
- 表 A 中该行的日期在 I1 中单元格的日期上或之后
- 类型以“EX”结尾
表 A 中 D 列的每个单元格只能使用一次,以便输入到 K 列中。
因此,理想情况下,如果它有效,它看起来像这样:
请注意,单元格 K5 没有值,因为表 A 中单元格 I5 中日期之后的值尚未被 K 列中的其他单元格使用过 - 这是我最努力的事情。另请注意,单元格 K6 为空,因为尽管 D 列中有一个接近的数字,但该类型不会以“EX”结尾,并且没有其他尚未使用的值。
谢谢你,我希望这是有道理的。如有任何需要我进一步澄清的问题,将不胜感激。
我真的不知道从哪里开始。我尝试了 =IF(And(...)) 语句与 ISNUMBER(SEARCH(...) 相结合,但在无数次尝试后,这一直给我所有 N/A。
答:
1赞
Foxfire And Burns And Burns
7/12/2023
#1
好吧,使用 Excel365,我很确定使用 FILTER 会容易得多,但无论如何,这可能适合您:
=IFERROR(INDEX($D$2:$D$8;SUMPRODUCT(MAX(--($A$2:$A$8=H2)*--(RIGHT($B$2:$B$8;2)="EX")*--($C$2:$C$8>=I2)*--(ABS($D$2:$D$8-J2)=MIN(ABS($D$2:$D$8-J2)))*ROW($D$2:$D$8)))-1);"-")
该公式是一个数组公式,因此必须按 ++ 输入,否则将无法正常工作。CTRLSHIFTENTER
请注意,我的参数分隔符是;
评论
0赞
zack_la
7/12/2023
我希望你不介意,你是否介意非常简短地解释一下你提供的公式背后的逻辑,即如果可能的话,每个函数在做什么?
0赞
JvdV
7/12/2023
这可能无法按预期工作。将 D8 中的值更改为 1000,您就会明白原因。
0赞
zack_la
7/12/2023
啊,好地方,你是对的。
0赞
Foxfire And Burns And Burns
7/13/2023
@JvdV忘记添加公式必须作为数组公式输入。如果我将 D8 中的值更改为 1000,则单元格 k5 和 k7 返回 1000,因为该值与所有条件匹配。我不明白为什么你说这可能无法按预期工作
2赞
JvdV
7/13/2023
是的,如果我们改为 1000。在这种情况下,1009 会得到一个新数字 1000,应该保持空,因为现在已使用且不再可用。这个问题会扰乱大脑,但这样看:第一个要填写的单元格是,因为在考虑所有条件时,这将是与所有可能数字最接近的匹配。填写后,它将有效地使搜索范围为下一个最小的匹配项并报废使用的 .D8
K5
K7
D8
K2:K7
K3
ABS()
D2:D8
K3
D2:D4
D6:D8
D5
上一个:条件 MODE 函数的参数
评论