分享

VBA助我高效办公

 L罗乐 2016-09-10

        ——办公不识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原创,转载请注明出处。未经作者允许,请勿用于商业用途。



        





    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多