多标准小函数优秀

我坚持使用具有多个条件的小函数在excel中find至less10个值,并排除零。

  • 我有4列,人,date,时间和天气。
  • 我想要一个人考虑所有date的最小时间,天气不应该下雨。

我用这个公式:

=small(if(and(person="a",hours,"<>0",weather,"<>rainy"),hours),no) 

其中不代表1-5的数字。

已经提供了一个arrays配方解决scheme; 另一个标准公式(即non-CSE)方法可能是更新的AGGREGATE¹函数 ,它提供了一个循环处理层,而不需要用CSE来完成。

AGGREGATE可以select忽略错误; 通过强制任何不符合规定的值组合到#DIV/0! 状态,这些值将被忽略。 当所有三个条件匹配时,分母将是1,并且除以1的任何数字不变。

 =AGGREGATE(15, 6, C$2:C$13/((A$2:A$13=G$4)*(D$2:D$13=H$4)*(C$2:C$13<>0)), ROW(1:1)) 

填写第二,第三等最小。 如果你喜欢右键填写,把ROW(1:1)改为COLUMN(A:A) ,横向获得k增量。 记住用$来锚定范围和条件引用的列。

aggregate_three_column_match_2


¹AGGREGATEfunction是在Excel 2010中引入的。它在早期版本中不可用。

数组公式不能像ANDOR ,所以使用你的伪代码把它们放在一起,把它们减less到它们的布尔值:

 =small(if((person="a")*(hours <> 0)*(weather<>"rainy"),hours),no) 

请记住,这是一个数组公式,并且在退出编辑模式时必须使用Ctrl-Shift-Enter而不是Enter来确认。

因此,如果人员是A列,B列小时和C列天气,请将其放在您想要答案的第一个单元格中:

 =SMALL(IF((A1:A100 = "a")*(B1:B100 <> 0) * (C1:C100 <> "rainy"),B1:B100),Row(1:1)) 

使用Ctrl-Shift-Enter确认并复制所需数量的结果。 行(1:1)将被复制从1到2复制到3。