Excel中函数、公式大家都非常熟了,但“数组公式”你是否听过、用过?什么是数组公式呢?根据微软官方给出的解释,
数组公式:数组公式对一组或多组值执行多重计算,并返回一个或多个结果。
一、什么是数组公式?
直接看微软的解释,也许并不是很容易理解,根据个人的理解,让其更直白一点,可以这样简单理解,
引用了数组(可以是一个或多个数值,或是一组或多组数值),并在编辑栏可以看到以“{}”括起来的公式就是数组公式。而数组公式的作用就是对一组(单个数据可以看成是一组)、多组数据进行处理,然后得到想要的结果。
二、如何输入数组公式
既然数组公式是以“{}”括起来的,那是不是在编辑栏在公式的两端分别输入“{}”就可以了呢?答案是否定的,在Excel中要输入数组公式,必须以特定的方法来输入,算是告诉Excel,我们这里输入的是数组公式。
在某个单元格输入数组公式的方法如下:
1.在编辑栏输入完整的公式,并使编辑栏仍处在编辑状态;
2.按下Ctrl+Shift+Enter快捷键
经过以上两步操作以后,编辑栏会自动脱离编辑状态,并且选中单元格后,在编辑栏可以看到公式的两端有“{}”符号标记,而双击进入公式的编辑状态时,你会发现“{}”符号是不存在的。
三、数组公式有什么用?
这里做了一个类似微软官网上的例子,这里详细说明一下用法及好处。
以上面图片中的内容为例,假设我一共买了三支股票,其股份及买入价格分别如图中所示,现在我要计算我的总股本。
正常情况下我应该如何做?在B4输入“=B2*B3”,然后填充至D4单元格,这样B4、C4、D4就分别是每一支股票的股本了,然后在B5单元格再输入“=SUM(B4:D4)”,这样总股本就出来了。
上面的计算过程可以说一点问题没有,也绝对正确。但是试想一下,如果类似的数据有很多,如果不是计算我自己买的几支股票而是其他类似情况的数据处理的时候,采用上面的方法时,其工作量可想而知了。
我们再回到第一幅图中的公式“{=SUM(B2:D2*B3*D3}”,此公式便是一个典型的数组公式的应用,此公式的作用就是计算B2*B3、C2*C3以及D2*D3的和。而B2:D2*B3*D3便是一个数组,其中包含三个元素,各元素的值就分别是各项的乘积。
为了更好的验证数组说法,分别在B4、C4、D4单元格中分别输入=B2*B3、=C2*C3、=D2*D3,B7、C7、D7单元格中全部输入=B2:D2*B3:D3,结果如下图所示。
从上面的图中可以看到,第4行和第7行的计算结果是一样的,这就是数组的效果,数组会根据当前单元格所在位置自动取数组中对应序列的数值,如果将“=B2:D2*B3:D3”算式输入到其他的列中(非B、C、D列),这时你会看到“#VALUE!”的错误数值结果,因为在其他列时,Excel无法判断该取数组中的哪一个数值。
如果将第7行中的算式外面加上SUM,你会发现结果仍然一样,因为默认情况下,数组算式只取对应序列的值,再加上SUM也只是对应的值,如果使用数组公式,便是告诉Excel计算数组中所有数值的和,也就是单元格B5中的结果。
三、数组公式应用进阶
数组公式最典型的应用应该是使用SUM替代SUMIF,虽然SUMIF很好用,但在Office 2007之前,也就是SUMIFS函数出现之前,如果想利用SUMIF进行一次多重条件判断的求和计算是很难实现的。
为了更便于理解,这里再用上面的例子进行一个比较简单的运算,上面只是列出了三支股票,如果我同时购买了多支股票,现在想知道这些股票当中,股价小于5元的股票有几支(这一功能可以使用Countif函数来实现,这里为了让数组公式更便于理解,所以使用SUM、IF相结合的数组公式来实现。
在B10单元格输入公式“=SUM(IF(B3:D3<5,1))”,按钮按下Ctrl+Shift+Enter组合键,使公式变成数组公式“{=SUM(IF(B3:D3<5,1))}”。
从上图中可以看到,计算结果为2,计算正确。如果对此怀疑,可以扩大数据区域,从而更容易理解。
下面说一下公式的整个运算过程。
1.IF(B3:D3<5,1),计算B3:D3区域内数值小于5的个数,因为使用IF判断,数值小于5时,取值1,所以该公式计算的结果是1,false,1,然后SUM进行数组求和也就是1+false+1,所以结果为2。SUM在求值时会自动忽略False,我们也可以把False直接当作0来处理。或者将公式改成IF(B3:D3<5,1,0),这样计算的结果就是1,0,1了。
如果要统计股价低于5的股价和要怎么办呢?将上述公司修改成“{=SUM(IF(B3:D3<5,B3:D5))}”即可,因为数组公式是一一对应的,也就是说IF条件满足时就取对应的数值,所以此公式的计算结果为4.04,false,4.43,最后的结果是4.04+false+4.43=8.47。
不知道看完了上面这些,大家对数组公式是否有所了解了,更进阶的应用,且听下回分解。
本文转自windyli 51CTO博客,原文链接:http://blog.51cto.com/windyli/306009,如需转载请自行联系原作者