——办公不识VBA,纵想偷懒也枉然! 正式上课之前,我们先要弄清楚几个问题。 1、 什么是VBA?通俗的理解便是一种内嵌在Microsoft Office办公组件内,允许你以另一种高效的方式来操作办公组件的一种工具、一门在Office组件之间通用的语言。打开任一Office套件,按组合键【ALT F11】,便可进入VBA编辑窗口——VBE。 2、Office办公组件何需VBA?Sir举几个例子来说明。 (1)重复任务自动化 你在一家贸易公司上班,工作内容之一就是月底收集旗下10间店铺的销售记录工作簿,并将所有销售记录汇总到一个工作表内。一般的做法便是分别打开10个销售记录工作簿,然后将销售记录复制到汇总工作表内,这样显然花费不了多少时间。但是随着贸易公司规模的扩大,假如有一天上次叫你汇总旗下500间分店的销售记录,再用一般做法就是耗时耗力伤身体了。 如果借助VBA,你只需要将500个销售记录工作簿和汇总工作簿放在一个文件夹内,按ALT F11,插入模块,编写(或粘贴)代码,再按F5运行,1-2分钟内你便看到500个销售记录工作簿的内容就汇总到一起了。短短16行代码,完成了原本一个上午甚至一天的工作量。 Sub 汇总() Application.ScreenUpdating = False f = ThisWorkbook.Path & '\' f1 = Dir(f & '*.*') Do While f1 <> '' If f1 <> ThisWorkbook.Name Then Set wb = GetObject(f & f1) With wb.Sheets(1) .UsedRange.Offset(1, 1).Copy [b65536].End(3).Offset(1, 0) End With wb.Close True End If f1 = Dir Loop Application.ScreenUpdating = True End Sub (2)复杂的数据统计 你在一个市场分析部分工作,现需要对市场调查30项内容进行分类汇总(求出各项内容的人数和百分比),一般的做法便是利用系统的分类汇总功能,分别对30项内容进行分类求和,由于分类汇总功能不能汇总出百分比,还得另外用函数辅助。如果每项调查结果还要求制成图表,那工作量就够你受了。 如果借助VBA,按ALT F11,插入模块,编写(或粘贴)代码,再按F5运行,几乎在按F5的同时,你就看到了30项内容的分类汇总情况。短短25行代码,又帮助你完成了原本一个上午甚至一天的工作量。 Sub 市场调查数据分类汇总() Dim i&, j&, iCount&, sht As Worksheet Dim calDic As Object, percentDic As Object Set sht = ActiveWorkbook.Worksheets('自动') sht.Cells.Clear With ActiveWorkbook.Worksheets('市调数据分类汇总') For j = 1 To 22 iCount = 0 Set calDic = CreateObject(Scripting.Dictionary) For i = 3 To .Cells(65536, j).End(3).Row iCount = iCount 1 calDic(.Cells(i, j).Value) = calDic(.Cells(i, j).Value) 1 Next i Set percentDic = CreateObject(Scripting.Dictionary) For Each k In calDic.Keys percentDic(k) = Format(calDic(k) / iCount) Next k sht.Cells(1, (j - 1) * 3 1).Resize(1, 3).Value = Array(.Cells(2, j).Value, '人数', '百分比') sht.Cells(2, (j - 1) * 3 1).Resize(calDic.Count, 3).Value = _ Application.WorksheetFunction.Transpose(Array(calDic.Keys, calDic.Items, percentDic.Items)) Next j End With Set calDic = Nothing: Set percentDic = Nothing: Set sht = Nothing End Sub (3)组件之间协同工作 你在工程质量检测公司工作,现在需要将成500份质检报告(Word文档形式)内的相关数据,汇总到Excel工作簿内。一般的做法是,逐份打开Word文档,文档内的数据复制粘贴到Excel工作簿内,又是一件耗时耗力伤身体的苦差事。借助VBA,使Excel和Word组件协同工作,你只需要将所有质检报告文档和汇总工作簿放在一个文件夹内,按ALT F11,插入模块,编写(或粘贴)代码,再按F5运行,几分钟内你便看到500份质检数据就汇总到一起了。 (代码写得比较规范 ^_^,所以有点太长,影响阅读,就不粘贴了) (反向传输数据,就与Word邮件合并功能一样了) (4)VBA二次开发 当你VBA达到一定境界以后,可以借助VBA二次开发,打造各种各样的行业软件。财务人员可以开发财务软件,仓储机构可以开发物品管理软件,销售企业可以开发进销存软件,学校教务人员可以开发教务软件等等。 (5)其他 其实VBA的功能还有很多,这也是为何Microsoft Office办公套件成功的重要原因之一。只怕你想不到,鲜有VBA实现不了。 结语: 不懂VBA,那么生活就不止眼前的苟且,还有上司淋你头上的狗血。 学点VBA,那么上司委以重任你定能不负重托,生活便还有诗和远方的田野。 本文系作者NextSeven原创,转载请注明出处。未经作者允许,请勿用于商业用途。 |
|