2023-08-02 17:18来源:m.sf1369.com作者:宇宇
比如
=SUM(IF(A2:A100>0,A2:A100))
公式ctrl+shift+enter结束
意思是,首先IF函数判断如果A2:A100>0,那就返回A2:A100这一组数字,否则就返回FALSE这样得到一个由符合条件的数字和FALSE组成的数组,然后用SUM求和,FALSE会作为0被统计。
就像一楼所说的,上面的公式可以直接用
=SUMIF(A2:A100,>0)
那既然有SUMIF,为什么还要用这么复杂的SUM+IF数组公式呢?
首先,SUMIF只是为了解决这么一个具体问题而衍生出来的简化公式,它的思路还是上面数组公式的思路。
其次,数组公式的功能非常强大,并不限于上面这种简单的应用。
我们看另外一个应用较多的数组公式:
A列为姓名,B列为性别,现在在C列提取所有男性的名字,按出现的先后顺序排列
在C2输入公式
=INDEX(A:A,SMALL(IF(B$2:B$100=男,ROW(B$2:B$100)),ROW(A1)))
公式ctrl+shift+enter结束
公式往下拉
IF的数组公式被广泛用于符合条件数据的提取、排序、求和、平均、极值等等。
需要说明的是,数组公式不支持整列运算,比如B$2:B$100不能写成B:B
用Excel怎样统计出学生成绩各分数段内的人数分布呢?很多文章都推荐使用CountIF函数,可是每统计一个分数段都要写一条函数,十分麻烦。例如,要在C58:C62内统计显示C2:C56内小于60分、60至70之间、70至80之间、80至90之间、90至100之间的分数段内人数分布情况,要输入以下5条公式:
1. 在C58内输入公式统计少于60分的人数:=CountIF(C2:C56,<60)
2. 在C59内输入公式统计90分至100之间的人数:=CountIF(C2:C56,>=90)
3. 在C60内输入公式统计80至90之间的人数:=CountIF(C2:C56,>=80)-CountIF(C2:C56,>=90)
4. 在C61内输入公式统计70到80之间的人数:=CountIF(C2:C56,>=70)-CountIF(C2:C56,>=80)
5. 在C62内输入公式统计60到70之间的人数:=CountIF(C2:C56,>=60)-CountIF(C2:C56,>=70)。
如果要把0至10之间、10至20之间、20至30……90至100之间这么多个分数段都统计出来,就要写上十条公式了。
其实,Excel已经为我们提供了一个进行频度分析的FreQuency数组函数,它能让我们用一条数组公式就轻松地统计出各分数段的人数分布。例如,我们要统计出C2:C56区域内0至100每个分数段内的人数分布:
1. 在B58:B68内输入:0、9.9、19.9、……9.9、99.9、100。
2. 用鼠标选择区域C58至C69,在编辑栏内输入“=FreQuency(C2:C56,B58:B69)”。
3. 按“Crtl+Shift+Enter”组合键产生数组公式“={FreQuency(C2:C56,B58:B69)}”,这里要注意“{ }”不能手工键入,必须按下“Crtl+Shift+Enter”组合键由系统自动产生。完成后C58:C69将显示如图所示的分数分布情况。
用CountIF函数统计分数段的方法流传很广,但效率并不高,提出这个新方法希望对大家有所帮助。另外,在Excel的帮助里也有一个用FreQuency函数统计分数段的简单范例,大家可以参考。
先熟悉普通公式及函数的使用方法。
理解数组公式的意义。
找一些别人用的数组公式,了解其含义,自己操作一下。
插入-名称-自定义,把A2定义为单价,B2定义成数量,就可以=单价*数量