Excel 在第二个 table 中从多行中获取最大值

Excel getting max from multiple rows in second table

我有两个table

第一个table:

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

第二个table

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 的最大日期,并在第二个 table.

上查找

我多次尝试将 INDIRECT(INDEX(MATCH())) 与 MAX(IF()) 结合使用。

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

我只能有一行

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

有什么想法吗?

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

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

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

现在用 MAX 将前面的公式包装到 return 任何匹配 PID 的最新日期:

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

再次作为数组公式输入。

最后一步是将此连接到 ML_ID,我们通过将字符串文字 "PID2,PID3" 替换为表 1 中 ML_ID 的 VLOOKUP 的结果来完成此操作:

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

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