excel if函数怎么用详细教程
IF函数是Excel中的IF函数,根据指定的条件来判断其"真"(TRUE)、"假"(FALSE),根据逻辑计算的真假值,从而返回相应的内容。可以使用函数 IF 对数值和公式进行条件检测。
不管是excel的什么版本,if函数使用方法都差不多,而且if函数是处理大量数据的时候用得比较多的函数了。
使用IF函数可以对满足条件的数据进行处理,条件满足则输出结果1,不满足则输出结果2。可以省略结果1或结果2,但不能同时省略。今天我们就来讲讲excel表中IF函数该怎么使用。
1、excel if函数多个条件
满足多个条件也可以分两种情况:
1)同时满足多个条件;
2)满足多个条件中的一个或若干个即可。
我们以下图的数据来举例说明。

首先,利用AND()函数来说明同时满足多个条件。
举例:如果A列的文本是“A”并且B列的数据大于210,则在C列标注“Y”。

在C2输入公式:
=IF(AND(A2="A",B2>210),"Y","")
知识点说明:
AND()函数语法是这样的,AND(条件1=标准1,条件2=标准2……),每个条件和标准都去判断是否相等,如果等于返回TRUE,否则返回FALSE。只有所有的条件和判断均返回TRUE,也就是所有条件都满足时AND()函数才会返回TRUE。

然后,利用OR()函数来说明只要满足多个条件中的一个或一个以上条件。
举例:如果A列的文本是“A”或者B列的数据大于150,则在C列标注“Y”。

在C2单元格输入公式:
=IF(OR(A2="A",B2>150),"Y","")
知识点说明:
OR()函数语法是这样的:OR(条件1=标准1,条件2=标准2……),和AND一样,每个条件和标准判断返回TRUE或者FALSE,但是只要所有判断中有一个返回TRUE,OR()函数即返回TRUE。

以上的方法是在单个单元格中判断,也可以写成数组公式形式在单个单元格中一次性完成在上述例子中若干个辅助单元格的判断。
2、if函数嵌套用法
下图数据在d列显示如下结果:如果数据1大于60则显示合格,否则显示不合格。
那么在d2单元格输入以下公式:
=if(a2>60,"合格","不合格")
然后向下拖拽,自动生成数据,如下图D列效果。

if函数必须的条件:
每一个excel if函数必须使用英文的括号括起来;
括号内为三个数据,第一个数据是条件(如上例中的a2>60),第二数据为满足第一个数据后返回的结果,通常使用英文的引号括起来,第三个数据是不满足第一个数据时需要返回的结果;(如果不输入第三个数据可以吗,当然可以,返回什么结果自己试试吧)
经常出现的错误:
其中的符号如逗号和引号皆为英文(也就是所谓的半角),若输入中文符号则错误;
if的右括号放在了条件的后面;(这是在多个条件使用if函数进行嵌套时非常容易犯的错误)
if函数嵌套用法
例子:下图数据,在e列显示如下结果:如果A列的数据1小于60则显示不合格,如果大于等于60而小于80则显示合格,如果大于等于80而小于90显示良好,如果大于等于90则显示优秀。
这是经典的if嵌套应用例子,需要我们使用 if函数的嵌套。
if嵌套书写前,首先你要理解要求,并将要求数学化,也就是使用数学的模式表达出来,if函数多重嵌套一般情况下我们可以将它看做分段函数,那么问题就很容易解决了。例子以在E2单元格使用如下代码:
=if(a2<60,"不合格",if(a2<80,"合格",if(a2<90,"良好","优秀")))
当数据1小于60时,显示不合格,这时在 不合格 逗号的右侧默认就是>=60的情况,那么根据题意,只需再满足<80即可显示合格,于是我们将最简单的 if函数的第三个数据变成了一个if函数,依次类推,每一次可以将一个if函数作为每一个基本函数的第三个数据,从而形成多种嵌套。
(图例中多余在最后一个 if前后加了一个括号,当然这种方法也正确,但不是最简单的。)

其实还有另一种写法,也就是将嵌套的if写在基本if函数的第二个数据的位置,如下图,不过这种写法不常用,也比较不好理解,并且容易写错,不推荐大家使用。

if函数的高级用法
if函数除了可以引用单元格的数据还可以引用函数值或者其他表格甚至是文件的数据。下面举个小例子:
下图数据1中,如果当前数字超过本列数字的平均值则显示合格,达不到平均值的显示不合格。
函数代码如下:
=if(a2>average($a$2:$a$9),"合格","不合格")
这句话是这样理解的,当数据a2大于a2到a9所有数据的平均数时,返回合格,否则返回不合格。
其中average( )是求平均数函数,而$a$2:$a$9是绝对定位a2到a9的区域,加了$符号的作用是不会随着公式的拖动而改变,如果不加$这个符号,我们在拖动单元格自动生成数据时求平均数的区域a2到a9区域就会公式的拖动而变化,a2就会变成a3,a9就会变为a10,如果横向拖动时a2就会变成b2,这可不是我们想要的。但是average前面的a2没有加,那是我们想让它随着公式拖动而变化。

3、
打开所需软件Excel,直接在所需的单元格数据=if(条件,满足条件的结果,不满足条件的结果),当然整个if语句是支持嵌套的,比如可能是=if(条件1,满足条件的结果,if(条件2,满足条件的结果,不满足条件的结果))!
打开Excel,打开你的数据文档,在你想输出数据的单元格点击工具栏上的“插入”——“函数”——“逻辑”——“IF”,然后点击确定。

点击确定后会弹出一个框框,第一个表示条件,后面两个是判断条件的结果。点击小编标注的地方,选择数据,一般我们不用选择全部的数据,只需选择里面的其中一个即可。

选择A2,我们是用IF来判断数学成绩及不及格。如果条件<60分,说明不成立,就显示不及格,否则的话剩下的都是及格的分数了。

点击确定后,我们就可以看到判断的结果了,将鼠标放在第一个结果后面,当鼠标变成【+】时,我们双击它就可以得到全部的结果了。

分数不是还分及格、良好或者优秀的吗?我又该怎么判断呢?其实很简单,就是你连续使用IF就好了,术语上叫“IF函数嵌套”。比如我想60-70显示及格,70-80显示良好,80分以上显示优秀

我们再设置60-70分的显示及格,然后同样地,再第三行,又点击IF,进行嵌套。

同样的方法,设置良好和优秀,如果你后面还要再继续分的话,也可以继续嵌套,那么第三行就不要写优秀了。

同样的,我们把鼠标放在第一个结果右下角【+】,双击后就可以显示全部的结果了。

其他案例
Logical_test 表示计算结果为 TRUE 或 FALSE 的任意值或表达式。例如,A10=100 就是一个逻辑表达式,如果单元格 A10 中的值等于 100,表达式即为 TRUE,否则为 FALSE。本参数可使用任何比较运算符。
解决方法:
Logical_test 表示计算结果为 TRUE 或 FALSE 的任意值或表达式。例如,A10=100 就是一个逻辑表达式,如果单元格 A10 中的值等于 100,表达式即为 TRUE,否则为 FALSE。本参数可使用任何比较运算符。
Value_if_true logical_test 为 TRUE 时返回的值。例如,如果本参数为文本串“预算内”而且 logical_test 参数值为 TRUE,则 IF 函数将显示文本“预算内”。如果 logical_test 为 TRUE 而 value_if_true 为空,则本参数返回 0(零)。如果要显示 TRUE,则请为本参数使用逻辑值 TRUE。Value_if_true 也可以是其他公式。
Value_if_false logical_test 为 FALSE 时返回的值。例如,如果本参数为文本串“超出预算”而且 logical_test 参数值为 FALSE,则 IF 函数将显示文本“超出预算”。如果 logical_test 为 FALSE 且忽略了 Value_if_false(即 value_if_true 后没有逗号),则会返回逻辑值 FALSE。如果 logical_test 为 FALSE 且 Value_if_false 为空(即 value_if_true 后有逗号,并紧跟着右括号),则本参数返回 0(零)。Value_if_false 也可以是其他公式。
4、if函数——“快速判断给定值是否在指定区间”
在本例数据表的B列(上限)与C列(下限)中显示了一个数据区间。通过IF函数可以判断D列的值是否在B列与C列的数据之间。具体如下图:
选中E2单元格,在编辑栏输入公式:=IF(D2<B2,IF(D2>C2,"在","不在"),"不在")
按下回车键,即可判断D2单元格的值是否在C2与B2之间,并返回相应值。
选中E2单元格,双击右下角的自动填充柄,即可实现下面单元格的自动填充。

5、IF函数的循环使用
先看下表数据1至数据5分别对应A至E不同的列:

我们现在给出下列条件,当数据5在不同的区间给予不同的返回值:
1、数据5在区间(0,50 】则返回5;
2、数据5在区间(50,100 】则返回10;
3、数据5在区间(100,150 】则返回15;
4、数据5在区间(150,200 】则返回20;
5、数据5在区间(200,250 】则返回25;
6、250以上返回40。
我们按照常规的思维方式首相将数据5分数据段—数据段再对应返回值;思维方式没错,但是请问如何操作???
在这里我先介绍两种最基本的思维操作明细方法:
方法一:制定另一个数据表,用两个数据表配合使用
如下设置SHEET2,刚才的数据表看着SHEET1,则制定表如下:

然后将原来的表分级如下:在F列将所有的数据对应50为间断跳跃,则我们使用函数INT将闭区间的集解决,公式如下:=INT(E3/50)

返回数值如下:

针对F列数据可以做如下的操作,以F列数据为标的数据,在SHEET1中的G列中使用SHEET2中的表使用公式:
=VLOOKUP(F:F,Sheet2!A:B,2,0)往下拖,则会显示出如下的数据:

出错的地方我们也看到了,这里为了避免出现这样的情况可以加入公式IF函数妙用限制匹配过来的数据。我们在G列中的公式修改成如下的格式:为了比较直接加入H列公式,将下列公司写入H列即可。
=IF(F3>=6,40,VLOOKUP(F:F,Sheet2!A:B,2,0))则下拖数据后会显示出数据如下:

以上我们就得出了返回值。目的达到。
方法二:只用IF函数实现该数据的返回值。
这个方法不用另外的表依靠,只需要单纯的将IF函数循环使用即可。
在这里为了简化篇幅我直接将公式一步到位,如果你是菜鸟看不懂,请谅解。但是有基础的看起来比较容易,如果你是高手请赐教:
我将公式直接写在上方并直接返回参数值,如此方便快捷,至于中间的过程和方法不做明细的介绍了,时间有限请谅解。IF函数的循环使用如下:将该公式填入
=IF(IF(IF(IF(E3>300,6,0)=0,IF(E3>250,5,0),IF(E3>300,6,0))=0,IF(IF(IF(E3>150,4,0)=0,IF(E3>100,3,0),IF(E3>150,4,0))=0,IF(IF(E3>50,2,0)=0,IF(E3<=50,1,0),IF(E3>50,2,0)),IF(IF(E3>150,4,0)=0,IF(E3>100,3,0),IF(E3>150,4,0))),IF(IF(E3>300,6,0)=0,IF(E3>250,5,0),IF(E3>300,6,0)))<=5,IF(IF(IF(E3>300,6,0)=0,IF(E3>250,5,0),IF(E3>300,6,0))=0,IF(IF(IF(E3>150,4,0)=0,IF(E3>100,3,0),IF(E3>150,4,0))=0,IF(IF(E3>50,2,0)=0,IF(E3<=50,1,0),IF(E3>50,2,0)),IF(IF(E3>150,4,0)=0,IF(E3>100,3,0),IF(E3>150,4,0))),IF(IF(E3>300,6,0)=0,IF(E3>250,5,0),IF(E3>300,6,0)))*5,40)
为了方便大家能看懂,则可以拆分为如下的公式:拆分公式的步骤按照函数的每一个IF为节点,从最外层到最内层分别分解就可以明明得到如下的函数公式;
G=IF(E3<=50,1,0)
H=IF(E3>50,2,0)
I=IF(H3=0,G3,H3)
J=IF(E3>100,3,0)
K=IF(E3>150,4,0)
L=IF(E3>150,4,0)
M=IF(E3>250,5,0)
N=IF(E3>300,6,0)
O=IF(N3=0,M3,N3)
PQ=IF(E3>150,4,0)
R=IF(N3=0,M3,N3)
S=IF(Q3<=5,Q3*5,40)
然后将函数进行简化整合即可以得到上述的函数公式。这里就不多说了。
按照上述公司带入表中返回值如下:


上述数据不管有多少行距可以有效。
6、用IF函数清除工作表中的0
有时引用的单元格区域内没有数据,Excel仍然会计算出一个结果“0”,这样使得报表非常不美观,看起来也很别扭。这时,我们可以利用IF函数清除工作表中的0。

IF函数的表达式为:=IF(logical_test,value_if_true,value_if_false)。

其中,参数logical_test表示计算结果为TRUE或FALSE的任意值或表达式(这是运用解决0的关键)。

例如,我们在Excel单元格输入公式“=IF(SUM(B1:C1),SUM(B1:C1),“”)”

如果单元格B1到C1内有数值,且求和为真时,区域B1到C1中的数值将被进行求和运算。

反之,单元格B1到C1内没有任何数值,求和为假,那么存放计算结果的单元格显示为一个空白单元格。

7、or和if的组合使用
or和if的组合可以有多种用处,此处以计算销售占比为例。

打开一个工作簿,要计算某月的销售占比,输入销售占比标题。


将光标定位在结果输出的单元格上,在编辑栏中输入 =if,会提示if函数的含义,如果符合条件会返回一个值,若不符合则返回另一个值。此处的实例想要7月有销售额时输出占比,若没有则返回空值。

继续输入函数=if(or),会提示or函数的含义,当有一个符合要求时就返回TRUE,只有当两个都不符合要求时才返回FALSE。

编辑栏中输入 =IF(OR(B2="",C2="")) 以确定月销售额和销售总额是否有空白。

输入完整的函数 =IF(OR(B2="",C2=""),"",B2/C2) ,如果月销售或年销售为空时,则在占比列显示空,否则就计算出7月的销售占比。

按下enter键,填充其他单元格,进行数字的格式显示百分比。



8、IF函数合并Excel数据表
两张成绩表数据合二为一。操作步骤:
第一步、合二为一
第二步、表格排序
第三步、用IF函数,让成绩各就各位
第四步、表格筛选
第五步、删除重复的数据

合二为一
分别打开“语文”及“数学”这两个EXCEL表格,大家从图1中可以看出,两个表格的列数是一样的,A列是名次,B列是学生编号,C列是姓名,D列是成绩。
如果直接将“数学”表格中的数据复制到“语文”表格中,因为D列同是成绩,那么就无法区分出语文及数学成绩了,所以在复制“数学”表格的数据前,在“数学”表格的D列顶端单击鼠标左键,选中整列,然后单击鼠标右键,选择其中的“插入”,在D列前插入一列。
这样,“数学”表格中的成绩就由D列变为E列了。接下来从表格的第2行起,拖动鼠标选到第31行,然后在选中的列表上点右键,选择“复制”,再将表格窗口切换到“语文”表格窗口中,在A列下的空白位置,第32行的第一个格上单击鼠标右键,选择菜单中的“粘贴”,这样就把两个表格的数据合二为一了

表格排序
从上图中可以看出,表格的A列是名次,存有并列重复现象,C列是学生名称,也有可能存在重名,而B列的学生编号是唯一的,不会发生一个学生多个编号的现象。所以表格的排序就以B列(学生编号)为关键字。选中B列,点击EXCEL菜单中“数据”下的“排序”,在弹出的“排序警告”窗口中,按其默认设置“扩展选定区域”,点“排序”按键打开“排序”窗口

注意:在“主要关键字”中是否选择的是B列(学生编号),如果不是,可手动选择,排列顺序按默认的“递增”,因为这个表格有标题行,所以在“当前数据清单”项中,选择“有标题行”这一项。设置完成后,点“确定”就完成了排序工作,如图4,可以看出,编号从小到大递增排列,编号相同的也是依次排列。

用IF函数,让成绩各就各位
先来熟悉一下IF函数的语法结构:“IF(条件,成立的结果,不成立的结果)”。意思是,对函数中的“条件”进行判断,如果“条件”成立,也就为TRUE,那就输出“成立的结果”;如果“条件”不成立,也就是为FALSE,则输出“不成立的结果”。在“条件”中,还可以使用“=、<>、>、<、>=、<=”等关系运算符作为“条件”的表达式,然后按照运算的结果不同,输出不同的结果!好,先简要说这么多,下面切换到我们的主题中!在F列的第2单元格中输入下面引号内的公式“=IF(B2=B3,E3,IF(E2="","",E2))”

首先根据“条件(B2=B3)”(单元格B2与B3中的编号)判断是否相等,如果相等,条件为TRUE,就输出“成立的结果(E3)”(在F2单元格内显示E3单元格的内容);如果不相等,条件为FALSE,那就执行“不成立的结果”(嵌套IF中的命令),因为表格只是部分学生的成绩,所以还要再加上一个嵌套IF过程,在这个过程中,先判断E2单元格是否为空,如果为空,说明这一单元格是“语文”表格的单元格,就在F2单元格内显示一个空值;而如果E2单元格不为空时,则说明该行的这一单元格是“数学”表格中的成绩,则在F2单元格中输出E2单元格的内容。
公式输完后,按回车键结束,然后选中F2单元格,移动鼠标至单元格右下方的“+”(填充柄)上,按下左键拖动“填充柄”向下复制公式至表格底部。现在再来观察一下表格,是不是已把编号相同的数学成绩和语文成绩排在一行了,对于没有重复编号的,该公式也复制了E列中的数学成绩到F列中。

从图中可以看出,表格中存有两行数学成绩,如何把F列的数据转移到E列中呢?首先选中并复制F列,然后在E列上单击右键,注意这次在菜单中选择的是“选择性粘贴”,打开“选择性粘贴”窗口,在“粘贴”项中选择“数值”,点“确定”键便完成数据转移,当然,不要忘了删除F列。

表格筛选
下面就可以在表格中筛选语文及数学成绩均在前30名的学生了!这里还是要用IF函数,对重复编号的作一个标记。先来分析一下如何写IF函数,编号重复,则说明该编号的学生语文及数学均在前30名,所以才会出现重复编号。明白了这个道理,就可以写IF语句了,在F列的第2单元格内输入公式“=IF(B2=B3,1,"")

这段公式的意思是:如果单元格B2(学生编号)与B3相同,那就在F2单元格内显示“1”,如果B2与B3单元格的内容不同,则在F2单元格内显示空。这里所输出的“1”只是用来作筛选的标记,也可以把它写为“2”或者“a”等之类的字符。然后再拖动单元格的“填充柄”至复制公式至表格底部,这样,凡是有重复编号的,会在第一个编号行的F列中对应的单元格内显示“1”。其实也可以通过判断某一列内语文与数学成绩是否同时存在作为条件,来作标记,相应的IF函数语句是:“=IF(AND(D2<>"",E2<>""),1,"")”,这里加入了AND函数来做判断,有兴趣的朋友可自已测试一下。
罗哩罗嗦说了这么多,终于该说筛选了,选中F列,点击菜单中的“筛选”-“自动筛选”,然后再点F顶端的筛选箭头,选择其中的“1”或“非空白”均可


删除重复的数据
既然已完成了筛选,为什么又出现了第五步?俗语说:“帮人帮到底”,表格中还有重复的数据没有清除,怎么能算完成呢?点击菜单中的“筛选”-“自动筛选”,去掉“自动筛选”前的对勾,显示全部的数据。在这里我们要删除重复的编号,而这些编号也有一个规律,第一个编号所在行含有语文及数学成绩,而第二个编号所在行只有数学成绩,所以只要给第二个编号所在行打上标记就可以了,同样还是使用IF函数,在G列的第二个单元格内输入公式:“=IF(B1=B2,1,"")”

注意和上面的那个作标记的有一点不同,这个是把标记作在只有数学成绩的重复编号行中。再拖动G2的“填充柄”复制公式到表格底部,然后使用“筛选”菜单中的“自动筛选”,筛选出标记为“1”的行,这些显示的就是数据重复行,接着选中它们,在右键菜单中点“删除行”,就从表格中清除了这些重复的数据。

9、本例数据表的B列(上限)与C列(下限)中显示了一个数据区间。通过IF函数可以判断D列的值是否在B列与C列的数据之间
选中E2单元格,在编辑栏输入公式:=IF(D2C2,"在","不在"),"不在")。按下回车键,即可判断D2单元格的值是否在C2与B2之间,并返回相应值。

选中E2单元格,双击右下角的自动填充柄,即可实现下面单元格的自动填充。
接下来是讲解如何用Excel计算成绩是否合格的实力

选中要使用函数的表格,选择“公式”—>“插入函数”,在弹出的对话框选择“if”

在IF弹出的对话中,logical_test选项填写条件,value_if_true选项填写条件为真返回的值,value_if_false选项填写条件为假返回的值

将鼠标放在单元格的右下角,当鼠标呈现十字时,拖动鼠标到该列的其他单元格。

结果显示:

以上就是关于“IF函数”在EXCEL中的应用方法。大家可以根据自己的需求选择不同的方法。其实操作起来很简单,用对了函数,做事情也会事倍功半。