【问题标题】:Excel getting max from multiple rows in second tableExcel从第二个表中的多行获取最大值
【发布时间】:2015-11-21 22:14:09
【问题描述】:

我有两张桌子

第一个表:

ML_ID   PID           Task Name Start   Color
1       PID1      One       01.01.2016  R
2       PID2,PID3     Two       #N/A    G
3       PID3      Three     01.03.2016  A
4       PID4      Four      01.04.2016  R
5       PID5      Five      01.05.2016  G
6       PID6      Six       01.06.2016  A
7       PID7      Seven     01.07.2016  R
8       PID8      Eight     01.08.2016  G
9       PID9      Nine      01.10.2016  A
10      PID10     Ten       01.09.2016  R

第二张桌子

PID         Dates
PID1    01.01.2016
PID2    01.02.2016
PID3    01.03.2016
PID4    01.04.2016
PID5    01.05.2016
PID6    01.06.2016
PID7    01.07.2016
PID8    01.08.2016
PID10   01.09.2016
PID9    01.10.2016

对于 ML_ID 2,我想通过查找第二个表来找到 PID2 和 PID2 的最大日期。

我用 INDIRECT(INDEX(MATCH())) 结合 MAX(IF()) 进行了几次尝试。

如果有更好的方法,我仍然可以影响数据结构。但是,在第一个表上,每个 ML_ID 只能有一行!

我想棘手的部分是,我需要一个或多个查找 - 取决于第一个表中 PID 的数量。

对此有什么想法吗?

【问题讨论】:

  • 我不明白你的目标是什么以及你遇到了什么问题——你能提供更多细节吗?
  • “最大日期”是指未来最远的日期吗?还是过去最落后的?
  • 另外,一个简短的说明(它可能会有所帮助) - 当我尝试使用带有小数格式日期的 Max() 时,它无法正常工作。当我将01.01.2016 更改为01/01/2016(和短日期格式)时,MAX() 函数起作用(返回范围内最远的日期)。
  • @BruceWayne:是的,正确,最后(最大)日期。我的问题不在于 max 函数本身,而在于根据表一中的列 PID 进行动态查找。
  • 嗯——max 的公式是什么?由于某种原因,我的索引/匹配(Index(max(...)))不起作用。

标签: excel indexing match vlookup


【解决方案1】:

修正了一个错误。谢谢亚当! 这可能对你有用。从这个开始:

=IF(ISERROR(FIND(Table2_PIDs&",","PID2,PID3"&",")),0,Table2_Dates)

作为数组公式输入 (CTRL-SHIFT-ENTER)。 [注意:&"," 强制 FIND 查找精确匹配 --- 搜索“PID1”,不会错误地找到“PID10”。] 这会一次测试一个 Table2_PIDs 的成员,看看它们是否出现在字符串“PID2,PID3”。如果未找到,FIND 函数将返回#VALUE,ISERROR 将捕获并导致 IF 返回零。如果 FOUND,ISERROR 将返回 False,因此 IF 语句的结果将是 Table2_Dates 的相应成员。因此该函数将返回一个类似 {0;01.02.2016;01.03.2016;0;0;0;0;0;0;0} 的数组。

现在用 MAX 包裹前面的公式,以返回任何匹配 PID 的最新日期:

=MAX(IF(ISERROR(FIND(Table2_PIDs&",","PID2,PID3"&",")),0,Table2_Dates))

再次作为数组公式输入。

最后一步是将其连接到 ML_ID,我们将字符串文字“PID2,PID3”替换为 Table1 中 ML_ID 的 VLOOKUP 的结果:

=MAX(IF(ISERROR(FIND(Table2_PIDs&",",VLOOKUP(ML_ID,Table1,2,FALSE)&",")),0,Table2_Dates))

作为数组公式输入。希望对您有所帮助。

【讨论】:

  • 非常酷!小提示:正如我在上面 cmets 中的不雅建议一样,OP 确实需要为 PID Table2_PIDs 中的 PID1 list 将匹配 PID1 和 PID10-PID19。 (即如果 ML_ID 只有一个 PID,PID11,此函数将返回 max(Date from PID11 and Date from PID1))这有意义吗?
  • 好收获!我想我可以通过在 FIND 函数中的 find_text 和 inside_text 附加一个逗号来解决这个问题。这样,您始终必须找到要查找的内容以及逗号分隔符。我正在相应地修改我的解决方案。
  • 到目前为止我还不知道数组公式。让我检查你的解决方案。提前致谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 2020-12-31
  • 2022-09-29
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2020-06-25
相关资源
最近更新 更多