Excel INDEX MATCH 查找我选择的两个日期

Excel INDEX MATCH 查找我选择的两个日期

截屏
我正在使用 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++输入ShiftEnter

=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函数,并证明产品列表作为答案,必须等于计数值。

根据需要调整公式中的单元格引用。

相关内容