从INDEX公式中的数组中删除0

时间:2018-11-29 23:16:12

标签: excel

长期潜伏,第一次发帖,爱这里的人。我在这里写了一个复杂的INDEX公式,我真的很接近解决方案。

  • 下面的INDEX基于两个条件匹配数组的行 以及基于其他字符串的列。
  • 我正在使用ROW函数来模拟MATCH函数以传递给INDEX, 和N(IF())以取消引用INDEX函数并将值数组传递给 MIN函数。
  • 我使用的是ROW *而不是MATCH,因为MATCH(1 ,,)仅返回 这两个条件得出的第一个值为6 TRUE。

除了一个问题外,所有方法都有效:我在N(IF(1,ROW()))之后传递给INDEX的数组仍然有很多0。例如,它得到“ {0,0,0,0,22,23,24,0,0)”,因此INDEX传递了“ {54,54,54,54,87,91,78,54,54}” MIN功能。

因此,我的问题。我觉得我真的很接近答案,但是我被卡住了。如果我能以某种方式从数组中删除0,以便仅将“ {22,23,24}”传递给INDEX,那么一切都会在我的工作表中起作用。

感谢您的指导!你们这里有一些非常聪明的人,你们都教过我很多!

=IF($H$9="","", MIN(INDEX($A$9:$Z$5000, N(IF(1,ROW($A$1:$A$4991)*(M$3=$H$9:$H$5000)*($X$6=$A$9:$A$5000))), MATCH($H4&CHAR(10)&CHAR(10)&CHAR(10)&$V$3&CHAR(10)&"(lbs)",$A$8:$Z$8,0))))

1 个答案:

答案 0 :(得分:0)

使用MIN(IF())代替构建数组

=IF($H$9="","",MIN(IF((M$3=$H$9:$H$5000)*($X$6=$A$9:$A$5000)*(INDEX($A$9:$Z$5000,0,MATCH($H4&CHAR(10)&CHAR(10)&CHAR(10)&$V$3&CHAR(10)&"(lbs)",$A$8:$Z$8,0))<>0),INDEX($A$9:$Z$5000,0,MATCH($H4&CHAR(10)&CHAR(10)&CHAR(10)&$V$3&CHAR(10)&"(lbs)",$A$8:$Z$8,0)))))

这是一个数组公式,退出编辑模式时必须使用Ctrl-Shift-Enter而不是Enter进行确认。


使用Office 365更简单:

=IF($H$9="","",MINIFS(INDEX(A:Z,0,MATCH($H4&CHAR(10)&CHAR(10)&CHAR(10)&$V$3&CHAR(10)&"(lbs)",$8:$8,0)),INDEX(A:Z,0,MATCH($H4&CHAR(10)&CHAR(10)&CHAR(10)&$V$3&CHAR(10)&"(lbs)",$8:$8,0)),"<>0",$H:$H,$M$3,$A:$A,$X$6))