2007年1月22日:上周同事提出了一个问题,就是在用excel表录入数据时有视同缴费年限和实际缴费年限两栏,视同缴费是指按政策在开展养老保险前没有虽然缴费但也应该视同已经缴费的年限,实际缴费年限就是实际已缴养老保险的年限,两个值都是含两位小数的形式,含义是:整数部分代表多少年,小数部分则代表有几个月。如11.01意思就是11年1个月。现在想用excel直接算出二者的合计年限。这就涉及到一个进年问题,因为如果超过12个月,就应该进上一年。比如7.04和8.08相加后应该是16,而不是15.12。试着用if函数进行判断然后计算,假设B3和C3分别是视同和实际缴费年限,而在合计一栏输入=IF(B3+C3-INT(B3+C3)=0.12,B3+C3+1-0.12,IF(B3+C3-INT(B3+C3)>0.12,B3+C3+1-0.12,B3+C3))公式后结果却不正确,出现*.12却不进位现象。在网上找到一个office精英俱乐部论坛,想发贴求助一下,可是注册后提示新注册六个小时之内不准发贴,我倒!没办法,等。
中午打开电脑,上网,终于能够发贴了,我急忙发出求助贴子:
“如何用if函数进行判断合算工龄
想用excel这样计算:一列为视同工龄(格式为:12.11,其中整数部分为年数,小数部分为月数,即12年11个月),一列为实际缴费年限(格式同前),现在想在后面计算二者的合计数,格式仍为整数为年数,小数为月数。由于涉及到如果月数相加超过12则需要进位,但我在实验时用if词句判断却出错。请高手指点。”
“开始18.12,19.12等出错,事来干脆就更乱了。不知何种原因。”
后来在电脑上无意中把选项中的“以显示值为准”选中后,有一些项目计算正确。但又出现一个问题,就是我设置的过渡参数太多,一列是求和,一列是求和的整数部分,一列是小数部分,一列是看是否进位(根据和的小数部分是否超过12),一列是最后小数部分(也就是月数),最后是算出真正的和(整数部分+进位+小数部分),太麻烦了。想找一种简单的方法。没隔几分钟,刷新网页就看到版主的回贴:
“=SUM(INT(A1:A100))+INT(SUM(MOD(A1:A100*100,100))/12)+MOD(SUM(MOD(A1:A100*100,100)),12)/100
比如区域为A1:A100 数组公式”
版主的及时助人精神真让我感动,可是我试用后还是出现.12现象。
下午上班时在单位一同事一句话提醒了我,他说:“怎么不把年全部算成月啊。”对,这真是一个好的思路。打开表格,假设B3和C3是两个数值,则求总月数的公式为=INT(B3)*12+(B3-INT(B3))*100+INT(C3)*12+(C3-INT(C3))*100,那么最后求总合计的公式是=INT((INT(B4)*12+(B4-INT(B4))*100+INT(C4)*12+(C4-INT(C4))*100)/12)+MOD((INT(B4)*12+(B4-INT(B4))*100+INT(C4)*12+(C4-INT(C4))*100),12)/100,解决问题!公式是太长了,不过也好理解,呵呵。解决好一个问题后心情真的很好啊,兴奋!
晚上再上网站,看到贴子上又有一新的跟贴,“公式:
=SUMPRODUCT(--LEFT(B3:C3,FIND(".",B3:C3)-1))+(SUMPRODUCT(--MID(B3:C3,FIND(".",B3:C3)+1,5))>=12)+MOD(SUMPRODUCT(--MID(B3:C3,FIND(".",B3:C3)+1,5)),12)/100
格式:小数设置为2位”
试验后成功,却没看懂,呵呵。今天的收获真大!