Excel 的 VBA 现在还算是办公利器吗?

论坛 期权论坛 期权     
匿名的论坛用户   2021-1-9 04:03   6580   10
非计算机专业学生,但是有少量数据处理任务,对计算机也有兴趣,本打算学VBA,但是有计算机专业的告知用处不大,不如直接学习更强大的Python等脚本,由此两个疑问:1. VBA是否已过气而不值得新人去学习了?2. Python等是否能方便高效地去处理、分析Excel的统计数据呢?谢答。
分享到 :
0 人收藏

10 个回复

正序浏览
11#
热心的小回应  16级独孤 | 2021-1-9 04:03:19
刚开始工作,需要处理很多数据,接触excel,慢慢学会用vlookup函数,然后开始用vba写自动处理的程序,后来用access,mysql做数据库,用c#和.net做程序。我是做财务的,也会写程序,可以说和数据整理处理统计有关的,基本都要找到我。

以前听过一个梗,说apple为什么干不过微软,就是因为office,说office有什么强大,可能最强大的还是excel,那么excel里最强大的,就是vba了。就我所了解,你在excel里做的所有操作,都能用vba操作,你可以自己录制一个宏试一试。所以,也就是说你能用代码来做一些做自定义程度非常高的工作,这点就是vba的强大的根源所在。

我不是计算机专业出身, 我也用c#,我学C++也吃力,但我觉得那些鄙视某一门语言或者技术的,大多都是真正的菜鸟,浮躁不可一世,别人泡在前面,TA在后面鄙视~~

说完~
10#
热心的小回应  16级独孤 | 2021-1-9 04:03:18
在Office办公上,VBA依旧是办公利器。有幸在实习的时候帮老板写过几千行的VBA代码,上手很快,对于Excel表格的数据处理效率很高,可以直接生成图表或者导出Powerpoint文档,省去了很多麻烦。

另外,题主不妨从学习成本上去考虑一下这个问题,VBA上手快,想要用什么功能,就去学什么功能,而且就在Office里面就可以写,能够很快的使用它来解决问题,这样给自己正向反馈,可以促进自己使用和学习的兴趣。真正到了VBA已经满足不了你的时候,你可以考虑再去学Python。而且,编程语言其实都是通的,你会了VBA,上Python手会更快。你本来的出发点,不就是解决问题么?所以更快的解决问题的方法就是好方法。

附我实习时候刚开始学VBA总结的一点东西:
Useful Tips for Excel VBA
9#
热心的小回应  16级独孤 | 2021-1-9 04:03:17
python当然可以分析小部分简单的excel文件,但是对于那些非程序员来讲,你教会他装个python然后在命令行下面启动不知道什么编辑器写出来的脚本,会比直接上自带的VBA容易?计算功能excel都自带了,大部分情况下,用不着python的库。
8#
热心的小回应  16级独孤 | 2021-1-9 04:03:16
excel vba不是办公利器
应该叫办公
行业:图书电商     职位:电商运营
以下作品请忽略界面美观性,一切设计以快捷实用为原则

BI相关:一键更新百万种商品关联推荐(sql)
使用了:最佳组合/购买过XXX商品还购买过 等关联推荐算法


多条件排行榜查询(sql)



图书信息批量查询:按条形码,本站链接/ID(sql)
          条形码自动识别客户的各种奇怪格式


一键监控指定图书到货情况(sql)


单品销量走势一键出图


快捷的按客户书单查书(内嵌网站界面)


自动比价商城折扣


vba更新畅销榜、新书榜推荐(写SQL)

扫描百度收录情况



发票抽奖快捷录入/ 批量提交


订单信息和扫描枪配合校对实物




电子邮件群发器


还有一些更核心更特殊的程序不便公开拉
7#
热心的小回应  16级独孤 | 2021-1-9 04:03:15
VBA是前端设计神器,和Excel结合起来可以设计出各种花里胡俏的操作界面。

一搞不好还会让从没用过的人在看到excel自己动来动去是以为你在变魔术。

至于Python,R, maltab,sql等功能更强大点东西,说实话,一般的公司业务量还达不到需要它们。等哪天真到了你会发现vba的各种慢和不方便,你会逼自己去学的。

如果马上有工作需要,先学VBA吧,边际回报很高。
6#
热心的小回应  16级独孤 | 2021-1-9 04:03:14
现实中的绝大多数VBA程序都是野路子选手本着弄出来凑合能用就行的心态写的,各种逻辑横飞,当然没注释没文档,更没有任何测试流程,高度依赖于运行环境,往往还链接了不同的xls和mdb文件。整个就是个魔法盒,除了作者没人知道该怎么维护,也没人能验证程序结果的正确性。

不可持续维护的代码对组织来讲当然是坏事,对个人就未必了。如果你处在一个周围人都是电脑白痴的职场,用VBA处理数据简直是神器。他们会用看猴子的眼神膜拜你,而且等你留下一坨坨屎一样的代码升迁走了以后,办公室里就会留下你的不败传说。
当年有你在,需要小工具的时候根本不用找程序员提ticket排队,找你花个几小时就能做出来。你留下的sheet点一个按钮就可以完成之前要做大半天的复杂工作,乃至于所有的人都已经忘了本来的工作手工要怎么做,离了你的工具就不能干活了。现在只是需求有变化需要改改功能,或者只是它不知为何突然崩溃了,全办公室都瘫痪了等着修好这个程序,新来的傻逼却怎么也搞不定。
所有的人都会缅怀你的强大,叹息你的离开。哪怕其实你自己也忘了那个程序怎么改,即使把你叫回来一样懵逼,但是无所谓你已经飞到一个崭新的环境创造屎代码或者根本不用再写代码了,这里的麻烦让它们自生自灭吧。

然后心满意足的你就可以来社区说一句:VBA是神器,别听他们搞计算机的瞎逼逼。

说的也没错。
5#
热心的小回应  16级独孤 | 2021-1-9 04:03:13
近一年来的感受,当然,作为程序员,VB是比较老的一门语言,但是只是为了办公,使用office软件处理数据,那VBA确实很有用。你也说了,你只是处理少量的数据,所以只需要简单的VBA基础知识,不要纠结,先从VBA开始学起,如果你真感兴趣,学完VBA再去学别的,会学的比较快。
下面是我学习写的一些笔记,你可以参考下
四、走进VBA的世界
001、多表合并
002、学习VBA之前先了解几个基本概念
003、Excel中的宏
004、宏操作举例:用宏实现点击按钮跳转的功能
005、宏操作举例:用宏实现数据查询功能
006、宏操作举例:用宏做个采购录入系统
007、VBA代码该如何调试
008、VBA代码注释
009、VBA中的运算符
010、VBA中的变量及数据类型
011、VBA中的变量的声明方式
012、VBA中变量的生存期限
013、VBA中四种常用的语句(with语句)
014、VBA中四种常用的语句(判断语句)
015、VBA中条件判断函数IIF
016、VBA中四种常用的语句(循环语句for next)
017、循环语句FOR NEXT 举例(数字验证)
018、循环语句FOR NEXT中的嵌套(九九乘法表)
019、循环语句FOR EACH NEXT
020、循环语句DO LOOP
021、结束DO LOOP循环语句UNTIL、WHILE
022、循环语句总结
023、VBA中四种常用的语句(错误转移语句)
024、VBA中函数的使用
025、一个重要且强大的的运算符(like)
026、VBA中单元格相对偏移的两种处理办法
027、单元格区域的选择(resize)
028、单元格区域的并集(union)
029、听说这是制作工资单最快的办法
030、单元格区域的交集(intersect)
031、动态获取单元格区域(currentregion)
032、动态获取单元格区域(usedrange)
033、动态获取单元格区域(end)
034、单元格基础操作(select、insert、delete)
035、单元格基础操作(cut、copy)
036、单元格基础操作(find、findnext)
037、VBA合并单元格(merge)
038、用VBA创建超链接(hyperlinks.add)
039、用VBA提取超链接(Hyperlink.address)
040、用VBA实现朗读功能(speak)
041、新建、打开、保存、关闭工作簿
042、根据分公司拆分工作表到工作簿
043、工作表的基本操作(新建、命名、移动、删除)
044、给工作簿里的各个工作表做个目录
045、VBA中遍历文本名的函数(dir)
046、把每个工作簿中指定的表汇总到一起
047、把一个工作簿中的各个工作表拆分成工作簿
048、VBA中数组的相关概念
049、数组的读取
050、数组的写入
051、动态数组
052、数组的下标及其获取方法(ubound、lbound)
053、一维数组转变二维数组的办法
054、与数组相关的一些函数(join)
055、join实例练习
056、与数组相关的一些函数(split)
057、与数组相关的一些函数(filter)
058、数组实例练习
059、工作表事件之SelectionChange事件、事件的启用和禁用
060、工作表事件之Change事件
061、工作表事件之Activate事件
062、工作表事件之Deactivate事件
063、工作表事件之BeforeDoubleClick事件
064、工作表事件之BeforeRightClick事件
065、工作簿事件之Open事件
066、工作簿事件之AfterSave事件
067、工作簿事件之BeforeClose事件
068、工作簿事件之BeforePrint事件
069、工作表、工作簿事件一览表
070、VBE窗口无法返回默认排列的解决办法
071、字典的基础概念及调用方法
072、字典的属性和方法(一)
073、字典的属性和方法(二)
074、字典数据的写入技巧
075、字典实例一(提取第一次和最后一次)
076、字典实例二(多表求不重复值)
077、字典实例三(每行都要去重复值)
078、字典实例四(单列分类统计)
079、字典实例五(多列分类统计)
080、字典实例六(条目数组的用法)
081、字典实例七(需要写入key的值有重复怎么办)
082、正则的基础概念及引用方法
083、正则表达式的基本语法
084、正则表达式之元字符
085、正则表达式之量词
086、正则表达式之分组
087、正则表达式中的或
088、正则表达式中的后向引用与非捕获分组
089、正则表达式之字符组
学习还在继续中,每天更新!
4#
热心的小回应  16级独孤 | 2021-1-9 04:03:12
(末尾有福利)楼上高赞回答了VBA在实际中的应用,和Python的对比优势。
我们在做数据分析的时候,用的工具基本上有python、R、SQL、还有Excel
很多人会觉得Excel不是过时了吗,其实目前中国企业做数据分析的工具99%还是Excel。(一个好用又强大的工具是永远不会有“过时”的概念)
1、顶级的咨询公司、四大会计事务、投行、券商这些名牌公司都还是以Excel为主要核心的技能。
并且你会VBA,一定是在这些名牌公司里加分的。
2、国内的BAT的运营、财务、数据人员还是离不开Excel。Excel大家都非常熟悉,经常会受各种表的折磨,比如财务、数据分析师、咨询顾问、运营等等。如果你拥有了VBA的编程能力,把几个小时的工作变成了几分钟,甚至是几秒钟,就会大大提升你平时工作效率,多增加思考时间。掌握这项技能对你工作能力的衡量,包括薪资的加成都有非常大的帮助。
点点用几个通用案例来告诉大家,记住这只是大家日常生活中的案例,但不代表VBA功能就仅限于此。(视频内容:合并文件、拆分文件、批量制作销售报表、批量制作PPT图表、批量插入插图)
              
                              excel VBA 通用案例                https://www.zhihu.com/video/1017401651245793280                          
            在这里,点点也给大家一个福利,关注微信公众号:POINT小数点数据
输入关键字:VBA小程序
你就会获得以上源码工作簿,不学习VBA,也可以直接拿来用哦~
亲们,获得工作簿,别忘点赞哦,分享脚本是个美德~你们点赞,点点才会继续多多分享脚本哦~
更新:大家在后台留言不知道怎么启用宏,点点给大家录了视频了哦~

3#
热心的小回应  16级独孤 | 2021-1-9 04:03:11
我的看法是这样的:
1、VBA和Python本身都不难,都可以作为非计算机专业入门的2种语言,都学的话不会占用你很多时间。
2、计算机专业的同学跟你说的也没错,如果你是计算机专业,你只会VBA是基本找不到啥工作的,Python精通起码有口饭吃,但是你如果以后不在it行业混,不去搞科学研究,我认为Python在其他领域的使用率远低于VBA。
3、如果你指的数据处理是基于excel或者access的,那你肯定要先学VBA,VBA与office结合最好,最容易上手,并且效率也不错。
4、Python肯定是比VBA要强大一些,并且效率也高一些。但是,有句话叫杀鸡焉用牛刀,如果你就是几千行的数据,你用Python那我真是给你跪了。这就有点像你就想听个cd,你不去直接买个cd机,结果你买来辆车,坐车上听cd一样。
5、VBA没过时,在计算机专业的眼里VBA一直都没地位,但在金融、财务等诸多其他领域,VBA是神器。基本任何企业的绝大多数部门都会用到excel,都会需要处理数据。在这个连筛选都不是人人会、数据透视图更是高大上的世界里,你精通VBA你就是宝贝。
2#
热心的小回应  16级独孤 | 2021-1-9 04:03:10
先说结论,VBA依旧是办公利器。以我的个人经历而言,在BCG做过三年咨询顾问,写了上万行的VBA程序,每个项目一千至几千行程序不等。最后将Excel用成了中控界面,类似EMACS,在Excel可以随意操控全公司的打印机、Word、Powerpoint等等,自动完成各种任务以及数据更新和抓取。依靠VBA,在效率上是一般同事的数倍甚至是高一个量级,你说VBA还是不是办公利器?

不过题主得到的反馈也正常,许多高级程序员确实瞧不上VBA。因为程序员是有鄙视链的:汇编 >C >C++ >Python >Java及C#及PHP(这三者相互撕) >VB >HTML。在这长长的鄙视链中,甚至都没有VBA的位置。

但是Office+VBA是图灵完备的,所以被程序员用来耍酷的各类性感语言能实现的大部分功能,VBA都能实现,而且往往是以更高效更快捷的方式,在这里不谈效率和优雅。较之Python等常用语言,VBA各有攻防各有优缺点。Python的优势当然是扩展性强、超越Office环境之后的适用性强、资源丰富以及效率高,而VBA的优点如下:
  • 环境不依赖,只需要打开装机自带的Office,然后按下Alt+F11就自动进入编程和执行环境
  • 上手简单,学习曲线很平缓,甚至可以更简单的通过录制宏来解决写程序的问题,只需要在简单的代码基础上修修补补就可以执行,参考Excel VBA 如何快速学习? - 何明科的回答
  • 与办公环境完美兼容,在Excel/Word/Powerpoint/Outlook/Access之间随便穿梭,比胶水语言还要简单易用
  • 分享性和移植性很强,几乎所有测试通过的程序放到别的机器上也可轻易执行(如果不考虑各种本地文件位置)

基于以上的优劣势对比,VBA仍然是当之无愧的办公利器之王。而且大家不用太在乎手中的工具(VBA还是Python或者其他),核心还是使用工具的人以及人的思考。

下面列举Office+VBA实现的若干功能,真正为职场人士省时省事省力。大部分内容在回答(Excel 到底有多厉害? - 何明科的回答)中已经出现过。不愿意点击过去阅读的,直接看下面的克隆内容。

1、批量修改格式
下图是利用Powerpoint中录制的宏再加上稍微修改的代码(甚至都称不上是改代码,大部分是改参数),将Powerpoint中所有的字体及字号进行统一修改。常做PPT而且需要根据老板的喜好改来改去的同学们,知道这个批处理功能有多么救命。



2、批量完成打印
刚进职场的新人,只要爸爸不是李刚,基本都做过影帝影后(影=印,各种复印打印的体力劳动)。特别是咨询投行服务行业,在大忽悠会议之前之后,花数小时或者整晚来打印数个文件,并不是天方夜谭。而且这件事情是对着同样一堆不断修改的文件,会经常不断重复发生。

我写的第一个VBA程序就是完成对100多张Excel表格的自动打印,因为是第一个VBA程序,所以比较挫,基本上是宏录制之后来改的,没有使用参考书及搜索引擎,全靠F1和自动提示,所以贴出来特别纪念一下。但也让大家清楚VBA上手也多么容易。实现的功能就是将每周都要做一次的100多张表格的按顺序打印让机器自动做一遍,而且需要防卡纸:按下一个“妞”,就慢慢美妙结果的发生。

后来这个程序的升级版是:调度多台打印机,进一步提高效率,以及将打印机卡纸造成队列错误的概率降到极小的范围内。

3、制作炫目视觉效果(图表、动画及油画)
图表制作是每个Office一族的必备任务,制得一手好表格,绝对是升职加薪和偷懒放风的利器。在回答(黄焖鸡米饭是怎么火起来的? - 何明科的回答),就利用Excel+VBA做出数张炫酷的信息地图,利用VBA为每个省的图形涂色。

(涂色部分来自于网上的一段程序,制作GIF动画的是自己完成的)

同时,为了进一步增强炫酷结果,还利用VBA将这些连续变化的图表做成了GIF动画。


另外还可以利用Excel,把心仪妹子的图片拿到手,然后用Excel化成点阵图并进行油画效果的处理,然后送给她撩一撩。


4、撰写八股文
这是帮朋友实现的一个项目,他们实验室是研究某类事故并对重大事故进行鉴定,最后发布word版的正式报告。之前的工作流程是在专业的软件中完成计算和仿真,最后按照正式报告八股文的行文,把各种关键信息填进去,最后写成Word文件。写报告的过程枯燥而没有技术含量,但却要反复进行。

通过下图的Word+VBA,完成主要的交互界面并连接计算软件。在通过简单的交互获取主要信息后,在后台完成计算并将主要信息填写入八股文的Word模版,最终完成报告,同时将结构化的信息存入Access数据库。


5、管理项目及同步内容
这是协助某国际大型汽车制造厂完成新品牌及其新款车型上市,面临车型即将断档的窘境,该新车型的上市非常关键,不能错失时间节点。然而,新车型上市涉及到无数分支:制造、产品、市场、渠道、营销、公关、财务等等,同时还要协调欧洲的两个总部以及中国的两个分部。

这次咨询的核心任务就是项目管理,总控整个大项目的进度,并每周向中国区的CEO汇报进度并发掘出易出现问题的关键节点以调配资源。我们4个咨询顾问分配下去各自负责几个部门或者项目分支,和团队一起规划流程、画甘特图、确认里程碑及时间点、安排负责人等等。当每天回到办公室大家将进度汇总在一起的时候发现了挑战及难点,每条任务线并不是独立发展的,而是各条任务线交织在一起并互相影响。
  • 某些核心人员在多个任务线出现。比如:负责预算的财务人员,几乎要出现在各条线中负责相关预算的审批环节
  • 某些任务线的里程碑是其他任务线里程碑的必要条件而相互关联。比如:新车的下线时间影响发布会的时间,相关法规测试的通过又影响车辆的下线时间等等

当任务线增多以及任务线之间的交叉越发频繁的时候,汇总的任务将会几何级数增加,这就是我们在项目过程中遇到的问题。于是我利用Excel+VBA完成了这个工作的自动化。主要实现的功能:
  • 自动将4个顾问手中分散的Excel文件汇集在一起形成一个大的总表,如下图
  • 各顾问手中的表格是按照部门维度来划分的,汇总后需要按照不同的维度来输出不同类型的表格,比如:按任务线输出表格、按责任人输出表格、所有延误任务的表格、所有需要资源重点投入任务的表格等等


在此基础之上,还要将上面提到的各种维度下的所有表格(大概有200多张),按要求格式粘贴到PPT中,每周提交给中国区的总部进行汇报和评估。密密麻麻的表格如下图。于是,我又写了一个程序将Excel中的表格输出到Powerpoint中,将一个秘书每次需要数小时才能完成的工作,简化成了一键发布,并可以在Excel中完成对PPT的更新。


这个项目的程序量不小,近似于写了一个迷你版的Microsoft Project来进行项目管理。


最后,下图中密密麻麻的PPT每周需要更新一次,每次都是快100张的工作量,然而基本上都是靠Excel来自动完成更新的。因为PPT的模版每次变化不大,我将这些模版记录下来,每周更新的时候只要根据Excel中最新的数据更改PPT中的数据即可。



6、海量下载Bloomberg数据并完成分析
通过Bloomberg的VBA API,海量下载数百只目标股票的tick data以及order book。


并根据实现构建好的数学模型,在后台完成计算,将上述的实时数据转化成每只股票实时的trading cost,实时展现在交易员最常用的Excel界面中,方便交易员评估当下的交易成本以便于优化交易策略。


更多文章请到数据冰山 - 社区专栏
更多回答请看何明科的主页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3118703
帖子:623848
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP