作者:乔山办公网日期:
返回目录:excel表格制作
比如
=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只是为了解决这么一个具体问题而衍生出来的简化公式,它的思路还是上7a64e78988e69d83361面数组公式的思路。
其次,数组公式的功能非常强大,并不限于上面这种简单的应用。
我们看另外一个应用较多的数组公式:
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
假设这段数据在zdA1:F1,那么在A2输入回:
=SUMPRODUCT(IF(ISNUMBER(--SUBSTITUTE(A1:F1,"早","")),--SUBSTITUTE(A1:F1,"早",""),0))
同时按下答CTRL+shift+回车
即可得到结果
UM只对数值数据zhidao求和,如果用IF得到的是文本结果,将被SUM忽略。
一般情况下IF尽量返回数值型数据。如果不可避免地版返回了文本型数字,则在SUM函数中将其转换为数值后再求和。方法有很多,如--(负负得正法),乘1,加0,除1等等都可以。
但要权注意,一旦这样转换,公式将变成数组公式了。
=countifs(A:A,"*人*",B:B,"*花度*")
按照你的公式内容:
{=SUM(IF(ISNUMBER(SEARCH("花",B1:B6))*ISNUMBER(SEARCH("人",A1:A6)))}
或者 Sumproduct
=sumproduct(ISNUMBER(SEARCH("花",B1:B6))*ISNUMBER(SEARCH("人",A1:A6)))