Excel报表再处理(一):宏
成绩统计软件都是按固定的算法进行统计的,输出的数据报表肯定不会100%符合不同学校老师的需求。这时我们可以通过Excel的宏对输出的报表进行二次处理。其实,说白了掌握Excel的VBA你都可以自行还原软件的大部分统计功能。程序设计的核心是思路,解决问题的方案因人因项目不同而已。而Excel再处理的思路就是:通过VBA从表格获取数据;通过VBA定义统计函数并根据源数据进行统计加工;输出统计结果到Excel。
一、什么是VBA
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是最基础的编程语言。要深入精通的一门语言不容易,但我们也不需要钻牛角尖只要掌握能解决问题的相关知识就行,没那么多精力。VBA就相当Excel的胶水,把Excel中的数据通过VBA设计各种程序逻辑来解决我们的需求。
二、简例
下面我举一个最简单的例子,可根据以下步骤在Excel上跟着操作。
1、打开Excel,右击下面的标签栏【sheet1】工作表选择【查看代码】时会另开窗体打开VBA编辑界面;
2、在VBA编辑器内上面的第一个下拉框选择【worksheet】,你可以把这理解为下面的程序逻辑作用范围在你看到的工作表这里,右边的下拉框是几个事件,我们选择Change事件(就是当工作表变化时会触发这个事件,我们把代码写到这个事件中间就可以了),其他几个事件字面上可以看出大概意思具体的大家有兴趣可以网上查下;
3、在事件中输入代码:Sheet1.Cells(1, 3) = Sheet1.Cells(1, 1) + Sheet1.Cells(1, 2)
这行代码什么意思呢,我们看下示意图:
A B C
1 (1,1) (1,2) (1,3)
大家应该看明白了吧,Sheet1表示工作表中的Sheet1表格,Cells表示单元格集合,(1,1)这些是单元格的位置,你就在脑袋里把表格列上的字母换成后面的数字就可以了。完整代码是:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheet1.Cells(1, 3) = Sheet1.Cells(1, 1) + Sheet1.Cells(1, 2)
End Sub
那么我们这行代码的意思就是,第一行第3格的内容是第1格和第2格相加的结果,在表格内容有任何变化都会执行一次。但大家要注意的是,VBA里的变量是变体,而变体的意思是指这个变量并没有指定特定类型可以是字符类型也可以是数字类型。所有你如果不在代码显式指定的话它的运算公式里后面的变量就会根据第一个变量的类型自行转型。也就是说,你在当第1个表格为内容1,第2表格内容为2,他们相加有可能是1+2=3,也有可能是1+2=12,这里取决于你设置的单元格类型。
4、点工具栏的保存按钮,如果弹出“无法在未启用宏的工作簿中”,选否,然后另存为.xlsm格式,下次打开这个xlsm后续的文件即可;
5、Excel默认应该是禁用宏的,这里先关闭当前文件后重新打开xlsm后缀的文件,如果提示未启用宏就点启用。在第1行的第1个和第2个单元格随便输下数字,第3格就可以看到计算结果了。(如果开启了宏,直接打开xls格式的文件就可以了)
L.Q.R 210331-210401(待继)