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))
作为数组公式输入。希望对您有所帮助。
我有两个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))
作为数组公式输入。希望对您有所帮助。