[一种基于Excel宏的固定资产折旧表的制作] 如何用excel算固定资产折旧

   【摘 要】本文提出了一种基于Excel宏的固定资产折旧表的制作方法,它是借助Excel宏工具对新中大软件固定资产系统的折旧数据进行再利用,从而产生所需要的报表,此方法对现有财务软件的二次开发与利用很有借鉴意义。
  【关键词】固定资产;数据文件;宏;折旧表
  
  一、新中大NGPower固定资产管理系统简介
  NGPower固定资产管理系统是新中大财务电算化系列软件之一,它作为其中的一个功能模块,既能与整套财务软件一起运行,也可以单独运行,它为用户提供固定资产管理所需要的各种功能,如建立固定资产卡片、每月自动计提折旧、输入并记录固定资产变动情况、生成所需的各种类型的账表。尽管该系统生成的各类账表能够满足用户的日常需要,但是有时用户某些特殊的需求却无法满足,如系统生成的“折旧计提明细表”中,我们需要在年中各月随时查看每项固定资产“本年折旧”数据,而系统只是在下一年的1月才能反映出来,不是很方便。为此,笔者根据多年的软件使用经验,利用系统提供的数据源,在Excel中制作出符合要求的“折旧表”,从而满足了用户的需求。
  二、基于Excel宏的固定资产折旧表的制作
  (一)数据源的准备
  数据源的准备就是在固定资产模块中生成并输出用于在excel中制作所需报表的数据文件,由于每项固定资产的本年折旧是由各个月份的数据累计得到的,因此,在固定资产系统中必须生成两个文件:一个是从1月截止到当前月份的数据文件,命名为bnzj,另一个是当前月份的数据文件,命名为zjb。
  1、bnzj 数据文件的产生:
  (1)进入固定资产模块,单击“查询打印”下的“折旧计提明细表”,在查询条件窗口中:选多个月份(要生成数据的那个月份,就选1月-那个月,如要生成11月的折旧数据,就选1-11月份),类别、部门选“全部”,然后单击“确认”,如下图(图1):
   (2)选“打印”-“转换输出”(见图2)
   注意:输入文件名时记住是在英文状态下:C:\bnzj (注意斜杠的方向)选“Text”,同时将“文件头带列标题”前面打上钩,单击“确认”按钮,如下图(见图3):
   “转换输出”完成之后,单击两次“退出”,回到主菜单中,继续下面的操作。
  2、zjb数据文件的产生:
  (1)在固定资产模块中,单击“查询打印”下的“折旧计提明细表”,查询条件:选一个月份(即要生成数据的那个月份,必须与前面一致,如要生成11月的折旧数据,就选11月份),类别、部门选“全部”,然后单击“确认”按钮,如下图(见图4):
   (2)选“打印”-“转换输出”(图略,参见前图2),第二次输入文件名为:C:\zjb,选Text,只将“文件头带列标题”前面打上钩,然后“确认” (图略,可参见图3)。 “转换输出”完毕后,退出固定资产管理系统,进入Excel系统,开始折旧表的编制。
  (二)基于Excel宏的数据操作
  在Excel中,主要完成两项工作:一是导入外部数据文件bnzj中的数据,即各月份的折旧数据,二是导入外部数据文件zjb中的数据,即当前月份的折旧数据,并在此表的基础上扩充一列“本年折旧”,并利用分类求和函数sumif()引用各月份的折旧数据,算出“本月折旧”一列的数据,从而生成符合要求的折旧表,这一系列操作均通过Excel【工具】--“宏”―“录制新宏”将上述工作过程录制下来,以后各月通过执行所录制的宏来完成折旧表的编制。限于篇幅,就不详细介绍宏的录制过程了,以下为宏的内容(供参考)。
  1.导入“各月折旧”数据的宏bnzj(为了便于识别,宏名也为bnzj)
  Sub bnzj()
   With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\bnzj", Destination:= _
   Range("A1"))
   .Name = "bnzj"
   .FieldNames = True
   .RowNumbers = False
   .FillAdjacentFormulas = False
   .PreserveFormatting = True
   .RefreshOnFileOpen = False
   .RefreshStyle= xlInsertDeleteCells
   .SavePassword = False
   .SaveData = True
   .AdjustColumnWidth = True
   .RefreshPeriod = 0
   .TextFilePromptOnRefresh = False
   .TextFilePlatform = 936
   .TextFileStartRow = 1
   .TextFileParseType = xlDelimited
  .TextFileTextQualifier = xlTextQualifierDoubleQuote
   .TextFileConsecutiveDelimiter = False
   .TextFileTabDelimiter = True
   .TextFileSemicolonDelimiter = False
   .TextFileCommaDelimiter = False
   .TextFileSpaceDelimiter = False
   .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
   .TextFileTrailingMinusNumbers = True
   .Refresh BackgroundQuery:=False
   End With
  End Sub
  2.生成含“本年折旧”折旧表的宏zjb(为了便于识别,宏名也为zjb)
  
  Sub zjb()
   With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\zjb", Destination:= _
   Range("A1"))
   .Name = "zjb"
   .FieldNames = True
   .RowNumbers = False
   .FillAdjacentFormulas = False
   .PreserveFormatting = True
   .RefreshOnFileOpen = False
   .RefreshStyle = xlInsertDeleteCells
   .SavePassword = False
   .SaveData = True
   .AdjustColumnWidth = True
   .RefreshPeriod = 0
   .TextFilePromptOnRefresh = False
   .TextFilePlatform = 936
   .TextFileStartRow = 1
   .TextFileParseType = xlDelimited
   .TextFileTextQualifier = xlTextQualifierDoubleQuote
   .TextFileConsecutiveDelimiter = False
   .TextFileTabDelimiter = True
   .TextFileSemicolonDelimiter = False
   .TextFileCommaDelimiter = False
   .TextFileSpaceDelimiter = False
   .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
   .TextFileTrailingMinusNumbers = True
   .Refresh BackgroundQuery:=False
   End With
   ActiveWindow.ScrollColumn = 2
   Columns("I:I").Select
   Selection.Insert Shift:=xlToRight
   Range("I1").Select
   ActiveCell.FormulaR1C1 = “本年折旧”
   Range("I2").Select
   Columns("I:I").ColumnWidth = 8.13
   Range("I2").Select
   ActiveCell.FormulaR1C1 = "=SUMIF(各月折旧!C1,RC1,各月折旧!C[-1])"
   Range("I2").Select
   ActiveCell.FormulaR1C1 = "=SUMIF(各月折旧!C1,RC1,各月折旧!C8)"
   Range("I3").Select
   Columns("I:I").ColumnWidth = 9.5
   Range("I2").Select
   Selection.AutoFill Destination:=Range("I2:I57"), Type:=xlFillDefault
   Range("I2:I59").Select
   ActiveWindow.SmallScroll Down:=-63
   Rows("2:2").Select
   Selection.Insert Shift:=xlDown
   Range("A2:C2").Select
   With Selection
   .HorizontalAlignment = xlCenter
   .VerticalAlignment = xlCenter
   .WrapText = False
   .Orientation = 0
   .AddIndent = False
   .IndentLevel = 0
   .ShrinkToFit = False
   .ReadingOrder = xlContext
   .MergeCells = False
   End With
   Selection.Merge
   Range("A2:C2").Select
   ActiveCell.FormulaR1C1 = “合计”
   Range("A2:C2").Select
   ActiveCell.FormulaR1C1 = “合 计”
   Range("A2:C2").Select
   ActiveCell.FormulaR1C1 = “合 计”
   Range("E2").Select
   ActiveCell.FormulaR1C1 = "sumif($A:$A,""=1"",E:E)"
   Range("E2").Select
   ActiveCell.FormulaR1C1 = "=SUMIF(C1,""=1"",C)"
   Range("E2").Select
   ActiveCell.FormulaR1C1 = _
   "=SUMIF(C1,""=1"",C)+SUMIF(C1,""=2"",C)+SUMIF(C1,""=3"",C)+SUMIF(C1,""=4"",C)"
   Range("E2").Select
   Selection.AutoFill Destination:=Range("E2:N2"), Type:=xlFillDefault
   Range("E2:N2").Select
   ActiveWindow.ScrollColumn = 5
   ActiveWindow.ScrollColumn = 4
   ActiveWindow.ScrollColumn = 3
   ActiveWindow.ScrollColumn = 2
   ActiveWindow.ScrollColumn = 1
   Range("K2").Select
   Selection.ClearContents
   Range("F2").Select
   Selection.ClearContents
   Range("M2").Select
   Selection.ClearContents
   Range("N2").Select
   Columns("M:M").ColumnWidth = 12
   ActiveWindow.ScrollColumn = 3
   ActiveWindow.ScrollColumn = 2
   ActiveWindow.ScrollColumn = 1
   Rows("1:1").Select
   With Selection
   .HorizontalAlignment = xlCenter
   .VerticalAlignment = xlCenter
   .WrapText = False
   .Orientation = 0
   .AddIndent = False
   .IndentLevel = 0
   .ShrinkToFit = False
   .ReadingOrder = xlContext
   .MergeCells = False
   End With
   ActiveWindow.SmallScroll Down:=-12
   Columns("F:F").ColumnWidth = 11
   ActiveWindow.ScrollColumn = 2
   ActiveWindow.ScrollColumn = 3
   ActiveWindow.ScrollColumn = 4
   ActiveWindow.ScrollColumn = 5
   ActiveWindow.ScrollColumn = 6
   ActiveWindow.ScrollColumn = 5
   ActiveWindow.ScrollColumn = 4
   ActiveWindow.ScrollColumn = 3
   ActiveWindow.ScrollColumn = 2
   ActiveWindow.ScrollColumn = 1
  End Sub
  (三)折旧表的生成
  1.产生“各月折旧”工作表的数据
  (1)单击“各月折旧”工作表标签(见图5)。
   (2)执行宏“模块1.bnzj”,生成“各月折旧”数据。操作过程如下图(见图6和图7),执行后可以看到“各月折旧”工作表中出现数据(图略),为最后生成“折旧表”提供了数据源。
   2.产生“折旧表”数据(操作过程同上)
  结果见下图(见图8)。
   3.对生成数据的折旧表进行完善
  如数据对齐方式、画表格线,设置标题等。至此,一张满足用户需求的固定资产折旧表就制作完成了。
  
  参考文献:
  [1] 杭州新中大股份有限公司,固定资产管理系统V6.1用户手册
  [2]木林森、高峰霞,Excel2000中文版使用与技巧,清华大学出版社,1999.200-202。
  
  作者简介:孟繁敏(1973―),男,新疆伊犁州财贸学校讲师,硕士,主要从事会计电算化教学与研究。

推荐访问:固定资产折旧 制作 excel