excel 中IF(AND)函数的运用

请教下大大们.

现公司要做年终奖,因分档太多,要用太大量的IF(and)语句,但当我输入超过7个if(and)时,提示出错.

姓名 全勤月数 是否含678三个月 工种是否是A
aaa 12 含 A
bbb 11 不含 A
ccc 10 含
....

要求是按照月份分组,
出勤12个月的,如果工种是A,且含678三个月,那么年终奖按150元*全勤月份数

出勤11-9个月的,普通工种按50元/月,含678三个月,按80元/月,如果工种是A,那么按60元/月,含678三个月,按110元/月

出勤9-6个月的,普通工种按40元/月,含678三个月,按50元/月,如果工种是A,那么按50元/月,含678三个月,按80元/月

出勤6个月以下的,普通工种按30元/月,含678三个月,按40元/月,如果工种是A,那么按40元/月,含678三个月,按70元/月

请教下各位,这个题目要怎么做!望大家不吝赐教!

EXCEL中IF(AND)函数是判断是否同时满足两个条件,其运用如下:

1.如下示例,假设数学95以上且语文95以上的学生给100奖金,鼠标左键点击要输出结果的单元格;

2.输入AND函数:=IF(AND(A2>=95,B2>=95),100,0),即数学95以上且语文95以上,输出100,否则输出0,如下图所示;

3.按回车键就会算出第一个结果,第一个结果满足条件,输出100,如下图所示;

4.然后利用填充柄填充其他的结果,判断第4和第6不满足条件,输出0,其他满足条件输出100,如下图所示;

5.“and”函数经常跟“or”函数一起用,or是判断满足其中之一的调教,假设数学或者英语得100分的给奖金50,输入函数:=IF(OR(A2=100,C2=100),50,0);

6.按回车并利用填充柄填充其他结果,判断第2不满足条件,输出0,其他满足条件输出50,如下图所示。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-19

AND(条件一,条件二.条件三....)      条件一  二  三 。。。都成立时返回   TURE  否则返回  FALSE

IF(条件,条件为TURE时返回值,条件为FALSE时返回值)

IF和AND 嵌套使用:    =IF(AND(A1>60,B1>60,C1>60),"及格","不及格")
             当  AND(A1>60,B1>60,C1>60) 为 TURE时 返回  “及格”
              为FALSE时  返回 不及格
          AND(A1>60,B1>60,C1>60)    当A1,B1,C1 都大于60时 返回TURE


IF单独 嵌套使用 :   (这里嵌套 3层)

=IF(A1>60,"及格",IF(A1>70,"良好",IF(A1>85,"优秀","不及格")))

这个函数的 意思时
当 A1<60 时  返回   不及格
当60<A1<70 时  返回  及格
当 70<A1<85时  返回   良好
当A1>85时     返回   优秀


其实 这个 IF嵌套可 换成  AND
如下

=IF(A1<60,"不及格",IF(AND(A1>60,A1<70),"及格",IF(AND(A1>70,A1<85),"良好",IF(A1>85,"优秀"))))

参照括号内容

第2个回答  2010-01-30
你这个条件不全啊,比如
出勤12个月,工种不是A的怎么算?
出勤12个月,不含678三个月的怎么算?

如果你把条件补全了,虽然if嵌套可以用定义名称的方法可以解决,但是很乱
我想用Vlookup来解决

首先你建一个辅助列表,第一列是
12含A
12含
12不含A
12不含
11含A
11含
11不含A
11不含
..........
共计4*12=48行,一直到一月,然后再在第二列写上对应的奖金,
如第一列对应的写150,而“11含”对应的添80,“11不含”对应的添50
“11含A”对应的填110,“11不含A”对应的填60,等等
看起来麻烦,其实大部分只要复制粘贴就可以了,

最主要的是便于检查,if语句检查起来要你老命啊。

然后你用vlookup,查询的是把“全勤月数 是否含678三个月 工种是否是A”这三列连接起来

看你提问题的口气,我觉得我没说的对你来说不是难事,就不啰嗦了。本回答被提问者采纳
第3个回答  2010-01-30
这个公式有点长,在E2输入:
=IF(C4="含",IF(AND(B4=12,D4="A"),B4*150,IF(AND(AND(B4>=9,B4<=11),D4="A"),B4*110,IF(AND(AND(B4>=9,B4<=11),D4<>"A"),B4*80,""))),IF(AND(AND(B4>=9,B4<=11),D4="A"),B4*60,IF(AND(AND(B4>=9,B4<=11),D4<>"A"),B4*50,"")))&IF(C4="含",IF(AND(AND(B4>=6,B4<=8),D4="A"),B4*80,IF(AND(AND(B4>=6,B4<=8),D4<>"A"),B4*50,IF(AND(B4<6,D4="A"),B4*70,IF(AND(B4<6,D4<>"A"),B4*40,"")))),"")&IF(AND(C4="不含",AND(B4>=6,B4<=8),D4="A"),B4*50,IF(AND(C4="不含",AND(B4>=6,B4<=8),D4<>"A"),B4*40,IF(AND(C4="不含",B4<6,D4="A"),B4*40,IF(AND(C4="不含",B4<6,D4="A"),B4*30,""))))

公式下拉即可。
Ps:第三个条件我将9~6个月改成了8~6个月,避免和第二个条件重复。答案是准确的,就是太长。至于有朋友说可以用lookup函数,我觉得不太可行。这个公式03版和07版都可以用,已经避免了7层嵌套的限制,供参考。
第4个回答  2010-01-30
方法一、
首先要筛选出一个条件,比如出勤月数吧,然后用if公式,这样就少3重if语句。公式只能复制到单元格,不能填充。
方法二、
用vba,具体的代码,如果需要的话请Hi我
相似回答