最近帮朋友做了一个报表统计的excel,因为本人比较懒,就直接用vba写了逻辑,而没有使用公式,代码实现了一些较简单的功能,例:算总收入,总支出,按月份统计的报销额度,根据财务人员给的公式自动算出管理费等,在这里mark一下,语言不是最重要的,重要的是解决问题的思路,与君共勉。因为我只对sheet1做了宏处理,所以在代码中使用worksheets(1)来查找sheet1中的单元格。有需要也可以更改成对整个工作簿作用。


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, j
i = 0
j = 0
inner = 0
outer = 0
Dim cost(1 To 12) As Long
Dim earn(1 To 12) As LongFor r = 2 To Worksheets(1).UsedRange.Rows.CountIf r = 2 ThenIf Worksheets(1).Cells(r, 5).Value <> "" ThenWorksheets(1).Cells(r, 9).Value = (Worksheets(1).Cells(r, 5).Value - Worksheets(1).Cells(r, 8).Value) * 0.08Worksheets(1).Cells(r, 6).Value = Worksheets(1).Cells(r, 8).Value + Worksheets(1).Cells(r, 9).ValueWorksheets(1).Cells(r, 10).Value = Worksheets(1).Cells(r, 5).Value - Worksheets(1).Cells(r, 6).ValueIf Worksheets(1).Cells(r, 2).Value <> "" Then//实现按月统计招待费用earn(Worksheets(1).Cells(r, 2).Value) = earn(Worksheets(1).Cells(r, 2).Value) + Worksheets(1).Cells(r, 5).ValueIf Worksheets(1).Cells(r, 11).Value = "客户关系维护" Thencost(Worksheets(1).Cells(r, 2).Value) = cost(Worksheets(1).Cells(r, 2).Value) + Worksheets(1).Cells(r, 6).ValueEnd IfEnd IfElseIf Worksheets(1).Cells(r, 9).Value = "" And Worksheets(1).Cells(r, 8).Value = "" ThenWorksheets(1).Cells(r, 10).Value = Worksheets(1).Cells(r, 5).Value - Worksheets(1).Cells(r, 6).ValueElseWorksheets(1).Cells(r, 6).Value = Worksheets(1).Cells(r, 8).Value + Worksheets(1).Cells(r, 9).ValueWorksheets(1).Cells(r, 10).Value = Worksheets(1).Cells(r, 5).Value - Worksheets(1).Cells(r, 6).ValueEnd IfIf Worksheets(1).Cells(r, 2).Value <> "" Thenearn(Worksheets(1).Cells(r, 2).Value) = earn(Worksheets(1).Cells(r, 2).Value) + Worksheets(1).Cells(r, 5).ValueIf Worksheets(1).Cells(r, 11).Value = "客户关系维护" Thencost(Worksheets(1).Cells(r, 2).Value) = cost(Worksheets(1).Cells(r, 2).Value) + Worksheets(1).Cells(r, 6).ValueEnd IfEnd IfEnd Ifinner = inner + Worksheets(1).Cells(r, 5).Valueouter = outer + Worksheets(1).Cells(r, 6).ValueElseIf Worksheets(1).Cells(r, 5).Value <> "" ThenWorksheets(1).Cells(r, 9).Value = (Worksheets(1).Cells(r, 5).Value - Worksheets(1).Cells(r, 8).Value) * 0.08Worksheets(1).Cells(r, 6).Value = Worksheets(1).Cells(r, 8).Value + Worksheets(1).Cells(r, 9).ValueWorksheets(1).Cells(r, 10).Value = Worksheets(1).Cells(r - 1, 10).Value + Worksheets(1).Cells(r, 5).Value - Worksheets(1).Cells(r, 6).ValueIf Worksheets(1).Cells(r, 2).Value <> "" Thenearn(Worksheets(1).Cells(r, 2).Value) = earn(Worksheets(1).Cells(r, 2).Value) + Worksheets(1).Cells(r, 5).ValueIf Worksheets(1).Cells(r, 11).Value = "客户关系维护" Thencost(Worksheets(1).Cells(r, 2).Value) = cost(Worksheets(1).Cells(r, 2).Value) + Worksheets(1).Cells(r, 6).ValueEnd IfEnd IfElseIf Worksheets(1).Cells(r, 9).Value = "" And Worksheets(1).Cells(r, 8).Value = "" ThenWorksheets(1).Cells(r, 10).Value = Worksheets(1).Cells(r - 1, 10).Value + Worksheets(1).Cells(r, 5).Value - Worksheets(1).Cells(r, 6).ValueElseWorksheets(1).Cells(r, 6).Value = Worksheets(1).Cells(r, 8).Value + Worksheets(1).Cells(r, 9).ValueWorksheets(1).Cells(r, 10).Value = Worksheets(1).Cells(r - 1, 10).Value + Worksheets(1).Cells(r, 5).Value - Worksheets(1).Cells(r, 6).ValueEnd IfIf Worksheets(1).Cells(r, 2).Value <> "" Thenearn(Worksheets(1).Cells(r, 2).Value) = earn(Worksheets(1).Cells(r, 2).Value) + Worksheets(1).Cells(r, 5).ValueIf Worksheets(1).Cells(r, 11).Value = "客户关系维护" Thencost(Worksheets(1).Cells(r, 2).Value) = cost(Worksheets(1).Cells(r, 2).Value) + Worksheets(1).Cells(r, 6).ValueEnd IfEnd IfEnd Ifinner = inner + Worksheets(1).Cells(r, 5).Valueouter = outer + Worksheets(1).Cells(r, 6).ValueEnd If
NextCells(2, 14).Value = innerCells(2, 15).Value = outerFor s = 1 To 12//将统计的数据显示在选定的单元格上Worksheets(1).Cells(s + 1, 18).Value = (cost(s) - (earn(s) * 0.001)) * 0.15Next
End Sub

这个程序有个小问题,因为我在做按月统计的时候把月份都列出来了,所以无形中将行数增加了,那么在算余额的时候用行数进行循环,会多出几个冗余的余额,但是当你的数据行数超过月份行数时就不会有这样的问题了
效果如图:

源码链接:http://download.csdn.net/detail/sinat_29673403/9692047

用VBA完成报表制作相关推荐

  1. 这是我见过最牛的报表制作神器!比Excel强大20倍!

    经常与报表打交道的人都知道,用Excel制作报表是一件非常麻烦的事情,不仅因为用Excel做报表步骤繁多,同时业务需求变化也会让报表改来改去,回工成本太大. 尤其是对于财务.IT来说,用Excel做报 ...

  2. 常用的6款Java开源报表制作工具

    本文为大家推荐6款常用的Java开源报表制作工具,供开发者学习.参考. 1.Aspose.Cells for JasperReports 一个基于Java的开源报表工具,它可以在Java环境下像其他I ...

  3. SQL Server R2 地图报表制作(四)

    SQL Server R2 地图报表制作(四) 接下来需要指定一个地图类型,它显示随分析数据而改变的标记.这里我们选择"分析标记图".如下图所示: Server R2 地图报表制作 ...

  4. JasperReports是一个开源的java报表制作引擎

    JasperReports是一个开源的java报表制作引擎 http://jasperreports.sourceforge.net iReport是JasperReports的一个GUI工具,用来生 ...

  5. SQL Server R2 地图报表制作(五)

    SQL Server R2 地图报表制作(五) 2.3 向地图中添加线条层 在上述报表的基础上,我们接下来添加一个表示两个商店间路线的地图层,这里我们依旧使用SQL空间数据源,部分步骤与上一节类似,所 ...

  6. 金蝶报表制作_BI报表不光好看,更好用,为什么很多人却还不知道?

    要在短时间内对海量数据实现有效的数据整理清洗,快速理清数据情况,掌握数据信息,可太为难一般的数据分析报表了.但既然大数据时代给了这样的数据分析难题,自然也会给出一个有效的解决方法--BI报表.但很奇怪 ...

  7. Asp.net报表制作 OpenFlashChart免费图表组件

    Asp.net报表制作 OpenFlashChart免费图表组件 OpenFlashChart是一款开源的以Flash和Javascript为技术基础的免费图表组件,用它能创建一些很有效果的报表分析图 ...

  8. JimuReport积木报表 — API数据源报表制作

    积木报表 ,一个开源免费的报表工具,像搭建积木一样在线设计报表!功能涵盖数据报表设计.打印设计.图表设计.大屏设计等! 领先的企业级Web报表平台软件,采用纯Web在线技术,专注于解决企业报表快速制作 ...

  9. 基于IBM Cognos的高级报表制作技巧

    IBM Cognos 商业智能系列软件提供了专业报表的制作平台,尤其在报表之间的关联分析上有着很强大的功能.本文从基于条件的动态报表制作和报表之间的穿透钻取两个方面介绍如何用 IBM Cognos 商 ...

最新文章

  1. Git pull[push] 不用每次输入用户名和密码
  2. Linux环境下gcc编译链接库-lz -lrt -lm -lc都是什么库?
  3. 生活优越与生活艰苦者之间的思考
  4. python最大公约数和最小公倍数
  5. 算法解读 ---- 递归(一)
  6. 2014末,Surface Pro 3叫好不叫座只是价格问题?
  7. 基于.NET2.0的System.Net.Mail发送邮件Demo
  8. 刷题总结——road(ssoi)
  9. 创建完maven工程之后,提示[FATAL_ERROR] Cannot start Maven: Project JDK is not specified. a href=''Configure...
  10. eclipse tomcat maven热部署
  11. 罗格斯大学计算机科学排名,罗格斯大学计算机工程硕士专业排名读完这篇立即秒懂...
  12. 九校联考-长沙市一中NOIP模拟总结
  13. 前端开发程序员的月薪到底有多高?
  14. 数学 立方和公式 立方差公式
  15. Java序列化连环炮:是什么?为什么需要?如何实现?
  16. 2.6顺序表和链表的优缺点(区别、特点)详解
  17. ps 仿章工具的使用
  18. java核心之类和对象
  19. 单项选择标准化考试系统
  20. React-简书项目

热门文章

  1. .php转为可执行文件,编译器构造 – 将PHP脚本转换为独立的Windows可执行文件
  2. HTML5+CSS大作业——中国风的元宵节专题(6页) 节专题活动页面滚动模板
  3. 进程概念 什么是PCB
  4. Python 几种取整的方法
  5. FPGA基础知识极简教程(4)从FIFO设计讲起之异步FIFO篇
  6. 2电平SVPWM调制原理
  7. 为什么计算机桌面的图标动不了,为什么win7桌面图标不能移动了?win7桌面图标不能自由移动的解决方法...
  8. 单例类(单例设计模式)[java]
  9. MacBook OS操作快捷键
  10. 来华留学生简明统计(2006-2019)