如何使用索引查找大于。的所有值
我一直在研究我的情况相当多,无论是在这个网站和其他人,这是最接近我的问题/解决scheme:
查找大于或等于某个值的所有值
但是,在我的情况下使用这种解决scheme并不能给我正确的结果。 我有83个名字的名单,每个名字都有处罚。 在一个单独的选项卡上,我想要显示具有任何罚分(> 0)的所有名称的输出。
我只有四个可能的处罚,所以如果我需要在公式(匹配或查找)中引用它们,那也可以。 缩短数据,这里是我的例子:
+----------+---------+ | Name | Penalty | +----------+---------+ | Name 1 | 0 | | Name 2 | 0 | | Name 3 | 5 | | Name 4 | 0 | | Name 5 | 0 | | Name 6 | 10 | | Name 7 | 0 | | Name 8 | 0 | | Name 9 | 0 | | Name 10 | 20 | +----------+---------+
使用这个公式,然后使用CSE
并向下拖动:
=INDEX($R$4:$R$13,SMALL(IF($S$4:$S$13>0,ROW($S$4:$S$13)),ROW(1:1)))
它给了我这些结果:
+---------+ | Name 6 | | Name 9 | | #REF! | | #NUM! | | #NUM! | | #NUM! | | #NUM! | | #NUM! | | #NUM! | | #NUM! | +---------+
我将通过使用一个IFERROR来处理这些错误,并使它们变成空白,但是仍然没有find罚分> 0的错误的正确名称
编辑:改变最后的“行”部分给了我不同的答案,所以我认为我的问题在于某处,但我仍然不知道该怎么办。 这应该是“小”function的“k”值。
任何帮助深表感谢。 谢谢!
我更喜欢使用MATCH()而不是SMALL():
=INDEX($R$4:$R$13,MATCH(1,($S$4:$S$13>0)*(COUNTIF($U$3:U3,$R$4:$R$13)=0),0))
这是一个数组公式,所以使用Ctrl-Shift-Enter。
此外,这个公式要求它至less在第二行开始,因为countif需要引用上面的单元格以避免循环引用。
如果你真的想使用SMALL(),那么你需要对起始行进行调整:
=INDEX($R$4:$R$13,SMALL(IF($S$4:$S$13>0,ROW($S$4:$S$13)-ROW($S$4)+1),ROW(1:1)))
或者@dirk指出数组部分是SMALL()而不是INDEX,因此可以使用INDEX部分中的完整列并使用SMALL,因为它将返回实际的行号:
=INDEX($R:$R$,SMALL(IF($S$4:$S$13>0,ROW($S$4:$S$13)),ROW(1:1)))
另外一个数组公式用Ctrl-Shift-Enter确认。
另一种方法是使用没有CSE的AGGREGATE作为正常的公式:
=INDEX($R:$R,AGGREGATE(15,6,ROW($R$4:$R$13)/($S$4:$S$13>0),ROW(1:1))
这是作为一个常规公式input的。 它仍然是一个数组types的公式,所以仍然只需要使用数据集作为参考,并避免在公式的数组部分中引用完整的列引用。
当第一行需要第一个返回结果时,最后两个特别有用,因为它们不需要COUNTIF()来保持Unique返回值。