为什么要用python处理excel-以Excel处理为目的学习python还是VBA?

------补充2020/07/15-21:19:

(1)我认同python在作为胶水语言和库很多这两点上的优势,不过正如文中所述,99.99%用excel的人是真的用不到那些库,也没时间学习(需要有编程基础/思维,英语不错,愿意抽出时间钻研等)。很多时候作为有编程专业背景的人会理所当然地觉得这些都很简单,过分高估大众对编程的学习能力,因为他们已经淡忘了自己是如何花费数年努力学习才走到今天的了。

(2)有人认为python更适合业务逻辑复杂的程序。我个人人为:

任何能简化编程过程的语言,都有利于让程序在"表面上”看起来更轻爽,毕竟很多功能 库 都帮你在幕后做了。但越是庞大的库系统,意味着其基本功能的"块儿”就越大,所谓尾大不掉,比如python只用调用几个函数就能识别图片上的汉字,但最终识别出来的是毫无格式的汉字,你若是要让它识别表格中的汉子,并且把tab、空格等都显示出来,并且调整一下resolution,blahblah,诸如此类的细节都加以要求,那你会发现你就必须重写这个图片识别函数了。but you can't,因为该函数已经被封装成"块儿”了,你只能用这个块儿,改不了里面。尾大不掉。

python与vba就是类似这种关系。对于没用库实现 的,vba能更好实现;对于已经用库实现的,你所处的情景可能需要对库函数的功能做微调,但你想改也改不了。

(3)对于不用定义变量这个问题

但凡编写稍微有点规模的程序,都要求人们有一定程度系统性、整体性的思维,不但要在业务本省上整体考虑,还要从变量上整体考虑,当你用python编写一个超过40个变量的程序时,其实就已经需要通过规范的命名、定义变量,甚至做简单的注释来帮助你理清思路了,所以即便python不用定义变量,用户也是需要把涉及到的变量好好梳理一下的,毕竟这代码写好了要用很久,而且还要叠加更多的代码。那既然如此,还不如一开始就定义一下变量顺便梳理一下呢,所以我从不排斥定义变量。

(4)通过缩短元操作时间所累计节省下的大量时间

工作中,我们大多数脚本其实都是好多好多不到一百行的小程序,而不是那几个执行某个庞大功能的大程序。前者相比后者,在节省时间上的意义绝对有过之无不及。听我解释:

你有计算过一天当中会调用多少次某段脚本吗?我计算过,大概一百多次。我不可能每次调用都回到桌面,打开python再点run。你一天把回到桌面-打开python-f5run 这三个操作做一百遍试试,回来分享一下感受。特别是像我这种在机关做批量合同项目管理的,工作时的我都是每秒钟都要在脑袋里存储8个左右毫不相关的任务(而且都是要做好一阵子的任务),这很蛋疼,更多用的是短期记忆,如果你突然想调用一份文件,或完成某个操作,不用多,你只要多拐2~3个操作后就想不起来你要做什么了,真就这么现实。所以,我通过大量简单但实用的脚本函数,大大缩短我工作中这些元操作的时间,让我脑袋多线程处理任务的容量又多出了很多。

另外,excel可以在sheet上直接装载按钮,你将按钮关联上特定的脚本,以后只需要一点按钮,脚本就运行了,而python作为外姓软件完全做不到,比按钮多了十几部元操作,再乘以个100(一天执行该脚本的次数),再乘以个10(即你一天大概用到的脚本数量),就是你一天要精力精神折磨的次数(一万好几千次)。夸张吗?只有经历过的人才懂我在说什么。

我目前利用sheet做了一个集成界面,因为我在家编辑本文,所以没法上图,等明天上班看我能不能想起来给各位拍一张感受一下。

而这种与excel本身高度融合的集成界面,是python望尘莫及的。

(5)关于微软用python取代vba的传言

我们假设,微软真的用python取代vba了,他们会怎么做?直接把vba从excel中删除吗?显然不会,如果那样的话,全世界在这三十年实践中累积的无数vba代码怎么办?那些仍然靠着vba运行的无数程序、网站、公司、政府、学校,怎么办?全世界靠vba吃饭的程序员也好、金融证券管理blahblah其他管理者,怎么办?学习一门技术是需要付出时间的。

所以微软必须为这些vba财富和使用者负责,如何处置vba,已经不是他们说的算得了。这就好像人家已经买了你的砖头盖好了房子,你却突然说这个砖头不好我特么不想卖了,于是把人家房子拆了一样。

另外,你要清楚微软是一家巨头企业,养了世界上无数的工程师,里面有多少时靠着excel这个软件吃饭的,所以他们会不遗余力地做好并推广excel,保持它的竞争力。而基于python的grid studio是开源软件,不是说它不好,只是它的作者没有理由对全世界用户的使用需求负责,他做grid studio就是为了方便自己的学术研究罢了。而且,他即便有动力,也没有这个力量,他的个人力量在庞大的、被巨大利益趋势着完善excel产品的微软面前不值一提。要知道一款好的开源产品的制作需要巨大的天才,比如linux的作者linus。而其前身unix之所以没被完善,其实也就是因为其作者是个大学教授,做Unix仅仅为了教学,完全没有进一步完善它,为全世界用户负责的动机,这一点上简直跟excel vs gridstudio 一模一样。

再退一步将,如果微软真的傻叉到用python取代了vba,excel中嵌入了python,你知道会发生什么嘛?会有相当一部分用户从excel直接迁移到grid studio。为什么?因为虽然excel的功能完善和复杂程度,在当今没有任何一款表格软件能够匹敌。但是在基本的数据处理功能上,excel能实现的,gridstudio也能实现,这会导致那些对excel的使用只局限于处理数据(用不到字体、样式、各种柱状图等),并且受python热潮影响的,说不定对开源还有一些信仰的人,直接选择grid studio ,因为对这些人来说,迁移的成本不大。

vba的使用。这对于微软无疑是自掘坟墓。全世界大量激活excel带来的利益,都打水漂了,微软员工将面临场面壮观的裁员。而且,excel与其他office产品有集群效应,ppt、work、visio、excel、access……这些软件都是联通的,但所有这些软件都有开源版本,当excel用户迁移到开源版本,你觉得距离其他office软件的用户迁移到对应开源版本的日子还会远吗?

你认为微软这么傻叉吗?

------以下是原文:

-----------------

VBA会被Python代替吗?

诸如"python比VBA好”这种话都是不会VBA的python教教徒或打python培训广告的教教主说的。我是个实用主义,只要能解决工作问题,让我更轻松的工具我就会使用。

1、从大环境上说:

表格处理工具或许除了excel还有很多,但你大概算一下全国14亿人口谁做表格第一个想到的不是excel(开发人员除外)?微软当年通过盗版培养起了大批量用户,这些人会将自己的软件癖好一代代在公司里传下去,因为当全公司99%的历史资料都是excel,99%的员工也都用excel时,你觉得作为那可能存在的1%,你即便会使用再好的工具X又能怎样?每次同事发你excel时你都转成X的格式?你只要操作2、3次就再也爱不起来了。

更何况办公不仅在电脑上,还在手机上,现在几乎每一部Android手机都有excel,同事在微信上传给你的excel你可以随时打开,然后再通过微信转发到电脑上,然后再直接打开……如上这套操作你想想你一天要进行多少次,每次都转格式吗?而你那款自认为比excel还好用的X,等真正普及到每个人的手机、电脑上都有一份,又要熬走多少代人?

2、从融合度来说

python不是不好,只是跟excel融合度并不高,毕竟是外姓。前者操作后者有很多潜在的麻烦。如果我正在做excel,突然做一个简单的批量处理,只需要一个alt+f11就能调出界面,随便敲两行就实现了。有人总拿vba开发大一点的项目运行效率会慢来说事,那我问你,在所有要用到宏命令处理Excel表的人中,有多少是需要开发大程序的?有没有占到总数的0.001%?大部分能写100行代码就开始办公室里面到处吹逼了好吧!

python虽好,但跟office毕竟不是亲戚,你还得打开python程序,新建文件,导入package。而且下次在想用时,你还得到处找上次的python脚本在哪儿。而vba只需要将excel存为xlsm就能找回代码,再一个alt+f11再按f5全搞定。

这就跟苹果当年出了只有一个按钮的鼠标,一群苹果信徒对2键鼠标大肆讨伐,而思路正常的人都知道单键鼠标有多么难用,更何况跟别的电脑完全不兼容,我一个几十块钱的鼠标用完就扔掉,随手就换一个,你的单键鼠标咋换?哈哈哈。现在人们对python的盲目崇拜,对VBA的大肆讨伐,也是同样的道理。是中了流行文化的度,务虚不务实,舍近求远。

3、处理excel真的有必要用python吗?

现在培训广告的口号大多是:学了python,就能批量处理excel表格,提前下班找妈妈恰饭。但问题是,所有excel处理都不涉及任何复杂算法,不需要二叉树啊堆栈啊定义对象啊什么的,顶多是业务逻辑繁琐一点,for循环if判断嵌套得多一点,变量定义得多一点,仅此而已,而这些困难不论再哪种语言(python or vba)都是存在的,而python的主要优势在于人工智能和大数据,请问贵公司贵岗位做两个excel表用到啥人工智能了?无非就是批量建表,批量核对数据,横查竖查,批量打印,都是非常简单的东西,而在处理这些任务时,excel有着先天优势。即便你用了python处理这些任务,你也只是用python的某个库(xlwt、xlrd),其他的库也基本不涉及,所以你也不能说自己会python了,你只能说自己会python的某两个小包。再退一步说,python这些包都是第三方开发的,而vba是微软亲自维护的,你觉得哪个兼容性好?哪个做得更标准?

反正我用vba香的很,每天上班工作量是同事的好几倍,假装贼痛苦,但都按时下班;)

你可能感兴趣的:(为什么要用python处理excel-以Excel处理为目的学习python还是VBA?)