我在很多地方尝试寻找这个问题的解决方案很长时间,但没能找到。
以下是描述:
我有一张产品转换时间表。我想创建一个列表,挑选下一个位置的 C/O 时间最短但不重复的产品。假设列表中的第一个项目是“手动”挑选的。
因此,使用所附的示例,该列表可能如下所示:
乙乙
您会发现,对于最后一个位置,我必须忽略 B 和 A,因为它们已经被选中。有人能帮我找出它的公式吗?
编辑:我忘了说我在工作时无法访问 Office 365,只能访问 2016。
A B C D E
A - 10 20 10 -
B - - - 10 15
C 20 - - 15 10
D 15 10 20 - 15
E - 20 15 10 -
答案1
是的,很有趣的问题。首先想象一下你可以再次挑选之前挑选的物品。
首先根据手动挑选的第一项找到要搜索最小值的范围(第一项):
=INDEX($B$2:$F$6,MATCH(firstitem,$A$2:$A$6,0),)
如果第一项是“A”,这将返回一个数组{-,10,20,10,-}。
现在找到该数组中的最小值(例如在单元格 G2 中):
=MIN(INDEX($B$2:$F$6,MATCH(firstitem,$A$2:$A$6,0),))
然后是该最小值的索引位置(例如在单元格 H2 中):
=MATCH(G2,INDEX($B$2:$F$6,MATCH(firstitem,$A$2:$A$6,0),),0)
及其对应的名称(在单元格 I2 中举例):
=INDEX($B$1:$F$1,H2)
现在你可以重复下一行,而不是引用 I2第一项
要忽略之前选择的项目,我们必须传播一个掩码,该掩码会修改上述每个步骤中的搜索数组。掩码一开始将是行 1,1,1,1,1,然后如果选择了“B”,则变为 1,0,1,1,1。使用 MINIFS 过滤 K2:O2 中的掩码
=MINIFS(INDEX($B$2:$F$6,MATCH(firstitem,$A$2:$A$6,0),),K2:O2,1)
和
=MATCH(G2,INDEX($B$2:$F$6,MATCH(firstitem,$A$2:$A$6,0),)*K2:O2,0)