我正在使用 Excel 记录项目列表(D 列中项目的名称),然后在 G 列中记录该项目的生产时间。
我正在使用 INDEX MATCH 搜索本周(或我选择的两个日期之间)表现最差的产品
=MAXIFS($G:$G,$E:$E,">="&O67,$E:$E,"<"&O68)
这将返回单元格 O67 和 O68 中两个日期之间最长生产时间的长度。然后我想要返回生产时间最长的商品名称(D 列)。
我试过了
=INDEX(D:F,MATCH(O69,G:G,0),1)
但这只是查看记录的时间并返回该时间首次出现在列表中的情况。这是一个很长的列表,所以很多时间都是重复的,所以这不是可行的方法,我只是希望它引用 O67 和 O68 中的两个日期,并在这两个日期之间查找 INDEX MATCH。
我认为要走的路可能是一个数组,但我以前没有这样做过,所以如果这是要走的路,那么你能和我一起慢慢来,这样我就能理解了!
提前致谢!
答案1
你可以试试这个大批公式,不是使用Enter而是使用Ctrl++输入Shift的Enter:
=INDEX($D$2:$D$1000,MATCH(1,($G$2:$G$1000= (ABSOLUTE REFERENCE TO MAXIFS CELL)
*($E$2:$E$1000>=$O$67)
*($E$2:$E$1000<$O$68),0))
在数组公式中,使用明智选择的范围的引用而不是完整的列,从性能角度来看会更好。因为如果您选择完整的列,数组公式实际上会在每一行上起作用,即使它不应该被使用,这会使工作簿变慢。
我没有Excel 2019来测试它,并且在Excel 365中数组公式只能查看,但不能输入。
答案2
您的问题可以通过使用一些辅助单元格来解决,即开始日期和结束日期及其计数。
输入此公式以获取单元格中的开始日期和结束日期的数量
E193
。=SUMPRODUCT(($C$179:$C$190>=C193)*($C$179:$C$190<=D193))
在单元格中输入此数组(CSE)公式
B195
,最后输入Ctrl+Shift+Enter并向下填充。
{=IF(ROWS(B$195:B195)>$E$193,"",INDEX(B$179:B$190,SMALL(IF(($C$179:$C$190>=$C$193)*($C$179:$C$190<=$D$193),ROW(B$179:B$190)-ROW($B$179)+1),ROWS(B$195:B195))))}
注意:
- 开始和结束日期的计数避免使用
IFERROR
函数,并证明产品列表作为答案,必须等于计数值。
根据需要调整公式中的单元格引用。