EXCEL公式 IF函数总是提示太多个参数 求高人指点

1年内<365365<1-2年<730730<2-3年<10951095<3-4年<14601460<5年以上<1825用IF函数完成以上结果,但总提示此函数输入太多参数!请高人指点
公式最后的)))如何确认应该是几个?

你这个问题用IF是完全可以的,当然用其他函数来求解更简单。你的截图没有把工作表截图下来,但从公式来分析, 应该是一个类似于计算员工工作年限的简单问题,如G4中是当前日期,如A列为姓名,B列为参加工作时间,C列来计算工作年限。

现在先用IF来做。用IF来做,是帮你更好地理解IF的用法,Excel 2003及最低的版本,IF可以嵌套7层,你这里只有6种情况,所以用IF是肯定没问题的,何况6种情况只要5个IF(后面再说明),而Excel2007及更高版本,可以嵌套64层!

你见过筛分砂砾石吗?采砂船采的砂砾石中有细砂、中砂、粗砂、细砾石、中砾石、粗砾石等。怎么把它们筛分出来?一般是根据细砂多还是最大粗砾石多,来先筛分。现在结合本问题(从小的开始),先筛分细砂,用一个只能通过细砂,如用筛孔尺寸为5mm的筛子来筛分,这样小于等于5mm的细砂就全部筛出来了。接着要筛选5~10mm的中砂,这时你怎么筛?是不要先用一个筛孔尺寸比5mm大一点的筛子筛一遍,再用一个筛孔为10mm的筛子来筛一遍?即AND(筛孔>5,筛孔<=10),你肯定会觉得这样来筛分是很可笑的吧!显然只要用筛孔为10mm的筛子即可把小于等于10mm的中砂筛选出来,因为剩下的砂砾中已没有小于5mm的了。这样依次把粗砂、细砾、中砾筛选出来,剩下是什么?那就是比中砾更大的砾石了,也就是粗砾!现在还用得着再用比中砾筛孔稍大的筛子来筛选一次吗?显然是多此一举!

回到函数IF的问题,IF用来与多个大小不同的数字比较时,既可以大的数字开始比较(先筛粗砾石),也可从小的数字开始比较(先筛细砂),但要按顺序才会有条理。本问题中,$G$3-B7<=365之后,和上面的筛分一样,判断1-2年时还需要再判断一次$G$3-B8>365吗?,不和上面再用稍大5mm的筛子来筛一次一样可笑?同样,最后一个IF来判断$G$3-B8>1825,就和上面说再筛一遍最后剩下的砾石一样,纯属多余(这就是前面说的6种情况,只需5个IF!)

通过以上分析,用IF的公式,如图中的C7:

=IF($G$3-B7<=365,"一年以内",IF($G$3-B7<730,"1-2年",IF($G$3-B7<=1095,"2-3年",IF($G$3-B7<=1460,"3-4年",IF($G$3-B7<=1825,"4-5年","5年以上")))))

顺便说一下,当用多个数据进行计算后再与其他数据做大小比较时,为了便于分析,也防止出错,最好是将多个数据的计算先用括号括起来,如本问题中,把$G$3-B7括起来,写成IF(($G$3-B7)<=365,……)这样的形式,当然本问题中只两个数据计算后比较,Excel会先做算术运算,再做逻辑运算,不用括号是没问题的。

再来说简化公式,已回答的基本上是给出lookup,就不重复了,现在给你一个CHOOSE的公式,如图中的D列

D7=CHOOSE(MIN(INT(($G$3-B7)/365)+1,6),"1年以内","1-2年","2-3年","3-4年","4-5年","5年以上")

公式说明:

G4-B列数据,得到参加工作的天数,按365/年计算,除以365后,就是参加工作的年数,INT取整后不足一年的为0,1-2年的为1,依次类推,得到0,1,2,3,4,5,6,及更大数字,CHOOSE函数是从1开始选择对应参数的,所以公式中用了+1。当INT+1的结果大于6(5年以上)时,MIN选择6和这个大于6的数字中最小的,所以结果是6,以达到5年以上只一个选择的目的。

追答

再说下你自己公式提示太多参数个数的问题,通过前面的分析可知,用IF来与数字大小进行比较时,只要按顺序(从小到大或从大到小)来比较,条理会很清楚的,这种情况下根本无需用AND(同时用两种筛子)的,但这不是你自己的公式出错的原因,用AND只是多余,但不会出错。出错的原因是:你的第5个IF中有4个参数,而IF只能有3个参数(也可以只2个参数)。第1个参数是条件,第2参个数是条件成立时得到的结果,第3参数为条件不成立时得到的结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-23

是因为你最后一个IF函数少了第三个参数
正确的公式应该是:
=IF(G3-B7365,G3-B7730,G3-B71095,G3-B71460,G3-B71825,"5年以上",""))))))
或者
=IF(G3-B7365,G3-B7730,G3-B71095,G3-B71460,G3-B7<=1825),"4-5年","5年以上")))))

本回答被网友采纳
第2个回答  2019-05-23

参数过多、过少是括号匹配造成的,你这样的情况最好使用VLOKKUP:

=VLOOKUP(G3-B7,{0,"一年以内";365,"1-2年";730,"2-3年";1095,"3-4年";1460,"4-5年";1095,"5年以上"},2)

第3个回答  2019-05-23
你这个4-5年那一行没有用AND函数啊,参数当然就多了,加上AND函数就好了,和上面一样,相信你会的。
第4个回答  2019-05-23
请用此公式代替原来的公式
=LOOKUP($G$3-B7,{0,365,730,1095,1460,1825}+10^-8,{"一年以内","1-2年","2-3年","3-4年","4-5","5年以上"})

下拉填充
相似回答