秋尽冬至,又到一年年终时。在工作中,数据的运算量和汇总的操作一下比平时多了不少。众所周知,在Excel中可以对数据进行各种不同的运算和汇总,今天我向大家介绍与条件相关的函数三兄弟,分别是“COUNTIF”、“SUMIF”和“IF”函数。他们有一个共同的特点——都姓字符“IF”。
大兄弟:COUNTIF函数(计数求和)
COUNT函数,顾名思义是用来计数的,统计所选择区域的数值型单元格个数。COUNTIF是COUNT函数的引伸与拓展,在计数时加上先前条件,只有符合计数的条件才进行统计计算。比如,从员工信息表中,计算出有多少人的年龄大于35岁。
下面我们来看一个典型的分类计数汇总的例子。这里有一张销售流水记录表,每名销售人员累计做了多少“销售订单个数”呢?
大兄弟COUNTIF正常工作需要两个参数——条件区域(本例为左侧表中“销售人员”一列)和计数条件(本例为右侧表中的人员姓名)。要计算第一位销售人员的“订单数”,很简单,输入函数公式 “=COUNTIF($C$2:$C$16,E2)”即可(见图1)。
二兄弟:SUMIF函数(条件求和)
SUM函数的作用是对数据求和,而SUMIF对它进行了引伸和拓展,比如计算“金额”在1元以上的数据总和、按照人员或产品分类计算数据总和等等。它有3个参数,分别是条件区域、判断条件、实际的求和区域(如果它与“条件区域”是一个区域,就可省略)。
在上例中,计算每位“销售人员”的订单总金额,就要使用SUMIF函数来协助了。如果要计算每个人的销售订单总金额,把左侧表的“销售人员”一列当作“条件区域”,把右侧表的每个名单当作求和“条件”,把左侧表的每笔“订单金额”当作“实际求和区域”,在G2单元格中输入数据计算公式 “=SUMIF($C$2:$C$16,E2,$B$2:$B$16)”(见图2),第1名销售人员的“订单总额”就瞬间产生了。
小提示:
在本例的COUNTIF函数和SUMIF函数中,由于“销售人员”区域与“订单总额”区域都是固定的,所以在函数中引用这两列地址时,要使用“绝对地址”,也就是在地址前添加“$”符号。
三兄弟:IF函数
逻辑高手IF函数是一个条件函数,它可以通过设置的条件进行逻辑判断。
如果在刚才的数据汇总表中再添加一列“销售奖金”数据,“销售奖金”发放的方法是:如果某个人的订单总额大于¥1500,000,那么“奖金”数用总额×5%,否则“奖金”就用总额×3%。所以,第1位销售人员“销售奖金”的计算公式应为“=IF(G2>1500000,G2*0.05,G2*0.03)”,如图3所示。
结合刚才的知识,推测一下这个公式中3个参数的涵义吧。“G2>1500000”是IF函数的判断条件,“G2*0.05”是条件成立的操作,“G2*0.03”是条件不成立的操作。
名师点睛:
*数据的分类汇总是Excel最常见的应用。分类汇总的方法很多,包括使用函数和公式。设置的条件可看作是分类的依据,用“COUNTIF函数”进行分类计数汇总,用“SUMIF函数”进行分类求和汇总,非常方便。
*IF函数的作用是根据判断条件的真假,自动进行分支操作。比如根据身份证号码的奇偶来判断性别,根据绩效数据来填写成绩等等。在实际应用时,一个非常实用的应用是:把IF函数的“真”或“假”参数嵌套成另一个IF函数,实现多种分支操作。如2个IF函数的嵌套可写成“=IF(条件,真,IF(条件,真,假))”,这样一来就可以实现3个分支判断了(在Excel中,最多是7层函数嵌套)。
*重复数据的筛选问题常常让我们感到非常棘手。COUNTIF函数除了可以实现分类计数汇总外,它和IF函数配合,还可以实现对重复数据的标识与筛选,从而将1列中的重复数据删除。在如下图4所示的案例中,使用了公式“=IF(COUNTIF($C$1:C1,C1)>1,”1”,”0”)”为重复数据的后面添加了标识“1”,为不重复数的后面添加了标识“0”。在公式中,COUNTIF是条件计数,可利用它统计出从这列的第1个数据起,某个数出现了几次,再用IF函数判断,若出现2次以上就添加“1”,若出现1次则就添加“0”。最后用Excel中的自动筛选功能,将所有标识为“1”的数据行删除,就能把重复数据统统清理掉了。
与“IF”相关的函数三兄弟,不但为运算添加了“条件”,而且为我们打通了很多解决问题的道路,只要我们肯用心发掘,一定还能够找到更多的问题解决之道。 |
上一篇:EXCEL中查找函数的妙用 下一篇:excel查询与引用函数:HLOOKUP、...
excel查询与引用函数:HLOOKUP、LOOKUP、MATCH、VLOOKUP2
2010-02-20 17:00
excel查询与引用函数:HLOOKUP、LOOKUP、MATCH、VLOOKUP2
将 div:eq(0) > div:eq(3) > table:eq(2) > tbody:eq(0) > tr:eq(0) > td:eq(0) > div:eq(0) > #content:eq(0) > br:eq(3)" offset="3">鼠标指针定位到E4单元格,输入公式“=IF(D4>20,"有加班",IF(D4=20,"全勤
小提示:
1.公司中所用的符均为英文半角,所有的字符、符号之间没有任何空格。
2.IF最多只支持七层嵌套,不过对付日常应用应该足够了。=if(a2<60,"不合格",if(a2<80,"合格",if(a2<90,"良好
3.也可以结合其他函数使用,=if(a2>average($a$2:$a$9),"合格
4.如果只有两种情况,只需要使用“插入”→“函数”命令,然后选择“IF”函数,最后输入相应的判别条件及判别结果就可以了。当然和文中一样直接输入IF函数也是可以的
第一步,拷贝标题栏
第二步,在编号处(A21)写入A001
第三步,在姓名(B21)创建公式
=VLOOKUP($A21,$A$3:$H$12,2,FALSE)
语法解释:在$A$3:$H$12范围内(即工资表中)精确找出与A21单元格相符的行,并将该行中第二列的内容计入单元格中。
第四步,以此类推,在随后的单元格中写入相应的公式。
图5
2) 近似的查找--根据定义区域最左列的值,对其它列数据进行不精确值的查找
示例:按照项目总额不同提取相应比例的奖金
Excel软件中的数据处理功能非常强大,很多人都用它来制作工资表,再打印出工资条。很多文章都介绍过如何把工资表制成工资条,但这些方法非常复杂,不利于操作。
笔者经过研究,找到了两种用Excel制作工资条的非常简单的方法,希望能对有这方面要求的朋友有所帮助。
方法一:排序法
第一步:打开工资表→在工资表最后一空白列输入1,2,3……(注:输入的数字与工资表的行数相同)(图1)。
第二步:在刚输入的数字下面向下输入1.1,2.1……,比上面的数据少一行,本列在K9中输入1.1(图2)。
第三步:在K列任何一个单元格中单击左键→单击工具栏上的升序排列按钮→选择工资表→编辑→定位→定位条件选择“空值”→确定。
第四步:在编辑栏中输入=A$1→按住Ctrl键不放敲回车键。
第五步:在单元格K15下方输入1.01,2.01……一直输入到6.01→单击工具栏上的升序排列按钮→删除K列的数据。加一下边框便大功告成了(图3)。
方法二:函数法
第一步:打开工资表→单击Sheet2标签→在Sheet2工作表的A1单元格中输入=IF(MOD(ROW(),3)=0,"",IF(MOD(ROW(),3)=1,Sheet1!A$1,INDEX(Sheet1!$A:$N,INT((ROW()+4)/3),COLUMN())))→向后拖到J1单元格(注:拖的长度应与原表长度相同)(图4)。
第二步:选择A1:J1区域向下拖→拖到第20行即可(注:拖的时候可能拖多或拖少,这时要看一下原表)→加一下边框便成功了(图5)。
第一步,建立一个项目总额与奖金比例的对照表,如图6所示。项目总额的数字均为大于情况。即项目总额在0~5000元时,奖金比例为1%,以此类推。
图6
第二步 假定某项目的项目总额为13000元,在B11格中输入公式
=VLOOKUP(A11,$A$4:$B$8,2,TRUE)
即可求得具体的奖金比例为5%,如图7。
图7
4、 MATCH函数
MATCH函数有两方面的功能,两种操作都返回一个位置值。
一是确定区域中的一个值在一列中的准确位置,这种精确的查询与列表是否排序无关。
二是确定一个给定值位于已排序列表中的位置,这不需要准确的匹配.
语法结构为:MATCH(lookup_value,lookup_array,match_type)
lookup_value为要搜索的值。
lookup_array:要查找的区域(必须是一行或一列)。
match_type:匹配形式,有0、1和-1三种选择:"0"表示一个准确的搜索。"1"表示搜索小于或等于查换值的最大值,查找区域必须为升序排列。"-1"表示搜索大于或等于查找值的最小值,查找区域必须降序排开。以上的搜索,如果没有匹配值,则返回#N/A。
2) 近似的查找--根据定义区域最左列的值,对其它列数据进行不精确值的查找
示例:按照项目总额不同提取相应比例的奖金
第一步,建立一个项目总额与奖金比例的对照表,如图6所示。项目总额的数字均为大于情况。即项目总额在0~5000元时,奖金比例为1%,以此类推。
图6
第二步 假定某项目的项目总额为13000元,在B11格中输入公式
=VLOOKUP(A11,$A$4:$B$8,2,TRUE)
即可求得具体的奖金比例为5%,如图7。
图7
4、 MATCH函数
MATCH函数有两方面的功能,两种操作都返回一个位置值。
一是确定区域中的一个值在一列中的准确位置,这种精确的查询与列表是否排序无关。
二是确定一个给定值位于已排序列表中的位置,这不需要准确的匹配.
语法结构为:MATCH(lookup_value,lookup_array,match_type)
lookup_value为要搜索的值。
lookup_array:要查找的区域(必须是一行或一列)。
match_type:匹配形式,有0、1和-1三种选择:"0"表示一个准确的搜索。"1"表示搜索小于或等于查换值的最大值,查找区域必须为升序排列。"-1"表示搜索大于或等于查找值的最小值,查找区域必须降序排开。以上的搜索,如果没有匹配值,则返回#N/A。