Board logo

标题: 用Excel制作工资报表的注意点 [打印本页]

作者: 月上西楼    时间: 2007-9-25 14:15     标题: 用Excel制作工资报表的注意点

  某单位会计在用Excel制作工资报表的过程中碰到两个难题,以致每次制作工资报表都要花较长时间加以调整。该会计找到笔者,希望能提供帮助。笔者经分析,发现用Excel制作工资报表须注意两点。
  一、 问题的提出


   1. 所得税计算问题。按照个人所得税有关规定,课税工资小于等于1000元时,不纳税;工资大于1000元且小于等于1500元时,税率为5%;工资大于1500元时,税率为10%。该会计应用逻辑函数IF( )对所得税额作两段处理,在“所得税”P3中输入公式“=IF(O3>1500, (O3-1500)*0.1+500*0.05, (O3-1000)*0.05)”,以致课税工资小于等于1000元时无法得出税额为零。其处理情况如图1(原始报表很大,不便观察,该图系对原始报表的缩简)。图中“应税工资”O8、O12分别为908.66、838.26,故“所得税”P8、P12中的值应为0,而现在却分别为4.57和8.09。为了使课税工资小于等于1000元时税额为零,只得重新核查报表并在相关单元格输入零。



图1 工资报表



  2. 工资表平衡问题。该会计每次制作工资表总是难以平衡,误差少则几分钱,多则几角。图1中Q10中的公式为“=O10-P10”,应为1316.82,可表格计算却为1316.83,原因何在?百思不得其解。为了平衡工资表,又得核查修改。

  上述两个问题的出现,耗费了会计大量的时间,以至于制作一张工资报表需好几天,有人建议她改用其它软件,可她又不想因改学其它软件而支付学习成本。基于这种考虑,她迫切需要解决以上难题,


  二、 问题的解决


  1. 所得税的计算。用逻辑函数IF( )计算所得税的思路是正确的,但利用单层IF( ) 函数,无法处理两种以上的状态,单层函数只能按给定表达式的值或真或假,返回两种状态中的一种,以致课税工资小于等于1000元时无法得出税额为零。而利用IF( ) 函数的嵌套,则可实现对多种状态的处理。所谓函数嵌套,指函数的参数包含子级函数,Excel函数嵌套最多可含7层。鉴于此,可用嵌套函数改写 “所得税”P3中的公式,公式为:“=IF(O3>1500,(O3-1500)*0.1+500*0.05 , IF(O3>1000, (O3-1000)*0.05,0 )),并将该公式复制到“P4:P12”。这样处理,课税工资小于等于1000时的税额即可为零,如图2中P8、P12的值为0。

  2. 工资表的平衡。工资表不平衡源于对所得税小数位数的取舍。按实际意义,所得税应为两位小数,而按税率公式计算的所得税却为三位小数。图1所得税为两位小数只是一种形式,是通过格式化单元格而得到的,实际上它是三位小数。其中,P10形式为16.68,实为16.675,Q10中的值应为:“1333.50-16.675=1316.825”,由于取两位小数,于是出现了:“1333.50-16.68=1316.83”的误差。这种误差只出现于所得税小数第三位为5 的情况,至于其它情况则不会出现。一个单位职工人数多达数百人,所得税小数第三位为5的对象肯定不止一个,这样的对象越多,则误差越大。如何解决这一问题?利用舍入函数ROUND(),将所得税由形式上的两位小数变为实际的两位小数,即可解决这一问题,即将“所得税”P3中的公式改为:“=IF(O3>1500,ROUND((O3-1500)*0.1+500*0.05,2),IF(O3>1000,ROUND((O3-1000)*0.05,2),0)),并将该公式复制到“P4:P12”。由此,工资表的平衡问题得到圆满解决。



图2 P8、P12的值为0






欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0