一个经典的示例是使用INDEX/SMALL组合的公式,例如下面的公式1:
=IN...
有时候,我们希望公式中有一部分能够在该公式向下复制到连续的行时,生成一系列连续的整数。
一个经典的示例是使用INDEX/SMALL组合的公式,例如下面的公式1:
=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10=”A”,ROW($A$1:$A$10)-MIN(ROW($A$1:$A$10)) 1),1))
查找单元格区域A1:A10中数据为“A”的第一个单元格,并提取单元格B1:B10中对应行的数据,如下图1所示。
图1
实际上,还可以使用一个更简单一点的公式2:
=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10=”A”,ROW($A$1:$A$10)),1))
然而,我觉得开头提到的那个长一点的公式1更好一些,因为如果单元格区域不是从A1开始的话,那个公式1更灵活。
在公式中,末尾的1代表SMALL函数中的参数k,即第k小的值,上例中我们取出的是找到的第1个值。在图1中我们可以看到,列A中还有几个单元格中的数据是“A”,如果我们要全部获取这些值,则需要末尾的参数k能够变成2、3,等等。
可以使用ROW函数:ROW()或者ROW(A1),如下公式3:
=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10=”A”,ROW($A$1:$A$10)-MIN(ROW($A$1:$A$10)) 1),ROW()))
将公式向下拖放至单元格D3,即可获得该示例中所有的结果,如下图2所示。
excel公式教程:找到和的加数
有时候,我们给出一个目标值,想要知道这个值是已经提供的一系列值中哪几个值的和。如下图1所示,在单元格A2中给出了目标值47,在单元格C1:K1中有9个值,现在我们想知道这些值中哪些值相加等于47,在这些值的下方单元格中使用“X”标记。 图1 在单元格C2中输入公式,然后拖放至单元格K2,得到结果。 那么,如何编写
图2
然而,这样的方式存在两个缺点:
1. 其值取决于最开始放置公式的那个单元格。
2. 如果在所涉及到的单元格区域中插入或删除行,那么可能得到错误的结果。
其实,解决这样的问题的最好方法是使用ROWS函数:
ROWS($1:1)
或者:
ROWS(A$1:A1)
将会提供连续的整数且没有前面提到的缺点。
这样,可以使用下面的公式4来代替上文中的公式1:
=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10=”A”,ROW($A$1:$A$10)-MIN(ROW($A$1:$A$10)) 1),ROWS($1:1)))
向下拖至单元格D3,即可获得满足条件的全部数据,如下图3所示。
图3
IFERROR函数,从结果中剔除不需要的值
在使用公式时,我们经常遇到将某个值从结果数组中剔除,然后将该数组传递给另一个函数的情形。 例如,要获取单元格区域中除0以外的最小值,可以使用数组公式: =MIN(IF(A1:A10<>0,A1:A10)) 或者对于Excel 2010及以后的版本,使用AGGREGATE函数: =AGGREGATE(