先学vba还是python-以Excel处理为目的学习python还是VBA?
------補(bǔ)充2020/07/15-21:19:
(1)我認(rèn)同python在作為膠水語言和庫很多這兩點(diǎn)上的優(yōu)勢,不過正如文中所述,99.99%用excel的人是真的用不到那些庫,也沒時(shí)間學(xué)習(xí)(需要有編程基礎(chǔ)/思維,英語不錯(cuò),愿意抽出時(shí)間鉆研等)。很多時(shí)候作為有編程專業(yè)背景的人會(huì)理所當(dāng)然地覺得這些都很簡單,過分高估大眾對編程的學(xué)習(xí)能力,因?yàn)樗麄円呀?jīng)淡忘了自己是如何花費(fèi)數(shù)年努力學(xué)習(xí)才走到今天的了。
(2)有人認(rèn)為python更適合業(yè)務(wù)邏輯復(fù)雜的程序。我個(gè)人人為:
任何能簡化編程過程的語言,都有利于讓程序在“表面上”看起來更輕爽,畢竟很多功能 庫 都幫你在幕后做了。但越是龐大的庫系統(tǒng),意味著其基本功能的“塊兒”就越大,所謂尾大不掉,比如python只用調(diào)用幾個(gè)函數(shù)就能識(shí)別圖片上的漢字,但最終識(shí)別出來的是毫無格式的漢字,你若是要讓它識(shí)別表格中的漢子,并且把tab、空格等都顯示出來,并且調(diào)整一下resolution,blahblah,諸如此類的細(xì)節(jié)都加以要求,那你會(huì)發(fā)現(xiàn)你就必須重寫這個(gè)圖片識(shí)別函數(shù)了。but you can't,因?yàn)樵摵瘮?shù)已經(jīng)被封裝成“塊兒”了,你只能用這個(gè)塊兒,改不了里面。尾大不掉。
python與vba就是類似這種關(guān)系。對于沒用庫實(shí)現(xiàn) 的,vba能更好實(shí)現(xiàn);對于已經(jīng)用庫實(shí)現(xiàn)的,你所處的情景可能需要對庫函數(shù)的功能做微調(diào),但你想改也改不了。
(3)對于不用定義變量這個(gè)問題
但凡編寫稍微有點(diǎn)規(guī)模的程序,都要求人們有一定程度系統(tǒng)性、整體性的思維,不但要在業(yè)務(wù)本省上整體考慮,還要從變量上整體考慮,當(dāng)你用python編寫一個(gè)超過40個(gè)變量的程序時(shí),其實(shí)就已經(jīng)需要通過規(guī)范的命名、定義變量,甚至做簡單的注釋來幫助你理清思路了,所以即便python不用定義變量,用戶也是需要把涉及到的變量好好梳理一下的,畢竟這代碼寫好了要用很久,而且還要疊加更多的代碼。那既然如此,還不如一開始就定義一下變量順便梳理一下呢,所以我從不排斥定義變量。
(4)通過縮短元操作時(shí)間所累計(jì)節(jié)省下的大量時(shí)間
工作中,我們大多數(shù)腳本其實(shí)都是好多好多不到一百行的小程序,而不是那幾個(gè)執(zhí)行某個(gè)龐大功能的大程序。前者相比后者,在節(jié)省時(shí)間上的意義絕對有過之無不及。聽我解釋:
你有計(jì)算過一天當(dāng)中會(huì)調(diào)用多少次某段腳本嗎?我計(jì)算過,大概一百多次。我不可能每次調(diào)用都回到桌面,打開python再點(diǎn)run。你一天把回到桌面-打開python-f5run 這三個(gè)操作做一百遍試試,回來分享一下感受。特別是像我這種在機(jī)關(guān)做批量合同項(xiàng)目管理的,工作時(shí)的我都是每秒鐘都要在腦袋里存儲(chǔ)8個(gè)左右毫不相關(guān)的任務(wù)(而且都是要做好一陣子的任務(wù)),這很蛋疼,更多用的是短期記憶,如果你突然想調(diào)用一份文件,或完成某個(gè)操作,不用多,你只要多拐2~3個(gè)操作后就想不起來你要做什么了,真就這么現(xiàn)實(shí)。所以,我通過大量簡單但實(shí)用的腳本函數(shù),大大縮短我工作中這些元操作的時(shí)間,讓我腦袋多線程處理任務(wù)的容量又多出了很多。
另外,excel可以在sheet上直接裝載按鈕,你將按鈕關(guān)聯(lián)上特定的腳本,以后只需要一點(diǎn)按鈕,腳本就運(yùn)行了,而python作為外姓軟件完全做不到,比按鈕多了十幾部元操作,再乘以個(gè)100(一天執(zhí)行該腳本的次數(shù)),再乘以個(gè)10(即你一天大概用到的腳本數(shù)量),就是你一天要精力精神折磨的次數(shù)(一萬好幾千次)。夸張嗎?只有經(jīng)歷過的人才懂我在說什么。
我目前利用sheet做了一個(gè)集成界面,因?yàn)槲以诩揖庉嫳疚?#xff0c;所以沒法上圖,等明天上班看我能不能想起來給各位拍一張感受一下。
而這種與excel本身高度融合的集成界面,是python望塵莫及的。
(5)關(guān)于微軟用python取代vba的傳言
我們假設(shè),微軟真的用python取代vba了,他們會(huì)怎么做?直接把vba從excel中刪除嗎?顯然不會(huì),如果那樣的話,全世界在這三十年實(shí)踐中累積的無數(shù)vba代碼怎么辦?那些仍然靠著vba運(yùn)行的無數(shù)程序、網(wǎng)站、公司、政府、學(xué)校,怎么辦?全世界靠vba吃飯的程序員也好、金融證券管理blahblah其他管理者,怎么辦?學(xué)習(xí)一門技術(shù)是需要付出時(shí)間的。
所以微軟必須為這些vba財(cái)富和使用者負(fù)責(zé),如何處置vba,已經(jīng)不是他們說的算得了。這就好像人家已經(jīng)買了你的磚頭蓋好了房子,你卻突然說這個(gè)磚頭不好我特么不想賣了,于是把人家房子拆了一樣。
另外,你要清楚微軟是一家巨頭企業(yè),養(yǎng)了世界上無數(shù)的工程師,里面有多少時(shí)靠著excel這個(gè)軟件吃飯的,所以他們會(huì)不遺余力地做好并推廣excel,保持它的競爭力。而基于python的grid studio是開源軟件,不是說它不好,只是它的作者沒有理由對全世界用戶的使用需求負(fù)責(zé),他做grid studio就是為了方便自己的學(xué)術(shù)研究罷了。而且,他即便有動(dòng)力,也沒有這個(gè)力量,他的個(gè)人力量在龐大的、被巨大利益趨勢著完善excel產(chǎn)品的微軟面前不值一提。要知道一款好的開源產(chǎn)品的制作需要巨大的天才,比如linux的作者linus。而其前身unix之所以沒被完善,其實(shí)也就是因?yàn)槠渥髡呤莻€(gè)大學(xué)教授,做Unix僅僅為了教學(xué),完全沒有進(jìn)一步完善它,為全世界用戶負(fù)責(zé)的動(dòng)機(jī),這一點(diǎn)上簡直跟excel vs gridstudio 一模一樣。
再退一步將,如果微軟真的傻叉到用python取代了vba,excel中嵌入了python,你知道會(huì)發(fā)生什么嘛?會(huì)有相當(dāng)一部分用戶從excel直接遷移到grid studio。為什么?因?yàn)殡m然excel的功能完善和復(fù)雜程度,在當(dāng)今沒有任何一款表格軟件能夠匹敵。但是在基本的數(shù)據(jù)處理功能上,excel能實(shí)現(xiàn)的,gridstudio也能實(shí)現(xiàn),這會(huì)導(dǎo)致那些對excel的使用只局限于處理數(shù)據(jù)(用不到字體、樣式、各種柱狀圖等),并且受python熱潮影響的,說不定對開源還有一些信仰的人,直接選擇grid studio ,因?yàn)閷@些人來說,遷移的成本不大。
vba的使用。這對于微軟無疑是自掘墳?zāi)埂H澜绱罅考せ頴xcel帶來的利益,都打水漂了,微軟員工將面臨場面壯觀的裁員。而且,excel與其他office產(chǎn)品有集群效應(yīng),ppt、work、visio、excel、access……這些軟件都是聯(lián)通的,但所有這些軟件都有開源版本,當(dāng)excel用戶遷移到開源版本,你覺得距離其他office軟件的用戶遷移到對應(yīng)開源版本的日子還會(huì)遠(yuǎn)嗎?
你認(rèn)為微軟這么傻叉嗎?
------以下是原文:
-----------------
VBA會(huì)被Python代替嗎?
諸如“python比VBA好”這種話都是不會(huì)VBA的python教教徒或打python培訓(xùn)廣告的教教主說的。我是個(gè)實(shí)用主義,只要能解決工作問題,讓我更輕松的工具我就會(huì)使用。
1、從大環(huán)境上說:
表格處理工具或許除了excel還有很多,但你大概算一下全國14億人口誰做表格第一個(gè)想到的不是excel(開發(fā)人員除外)?微軟當(dāng)年通過盜版培養(yǎng)起了大批量用戶,這些人會(huì)將自己的軟件癖好一代代在公司里傳下去,因?yàn)楫?dāng)全公司99%的歷史資料都是excel,99%的員工也都用excel時(shí),你覺得作為那可能存在的1%,你即便會(huì)使用再好的工具X又能怎樣?每次同事發(fā)你excel時(shí)你都轉(zhuǎn)成X的格式?你只要操作2、3次就再也愛不起來了。
更何況辦公不僅在電腦上,還在手機(jī)上,現(xiàn)在幾乎每一部Android手機(jī)都有excel,同事在微信上傳給你的excel你可以隨時(shí)打開,然后再通過微信轉(zhuǎn)發(fā)到電腦上,然后再直接打開……如上這套操作你想想你一天要進(jìn)行多少次,每次都轉(zhuǎn)格式嗎?而你那款自認(rèn)為比excel還好用的X,等真正普及到每個(gè)人的手機(jī)、電腦上都有一份,又要熬走多少代人?
2、從融合度來說
python不是不好,只是跟excel融合度并不高,畢竟是外姓。前者操作后者有很多潛在的麻煩。如果我正在做excel,突然做一個(gè)簡單的批量處理,只需要一個(gè)alt+f11就能調(diào)出界面,隨便敲兩行就實(shí)現(xiàn)了。有人總拿vba開發(fā)大一點(diǎn)的項(xiàng)目運(yùn)行效率會(huì)慢來說事,那我問你,在所有要用到宏命令處理Excel表的人中,有多少是需要開發(fā)大程序的?有沒有占到總數(shù)的0.001%?大部分能寫100行代碼就開始辦公室里面到處吹逼了好吧!
python雖好,但跟office畢竟不是親戚,你還得打開python程序,新建文件,導(dǎo)入package。而且下次在想用時(shí),你還得到處找上次的python腳本在哪兒。而vba只需要將excel存為xlsm就能找回代碼,再一個(gè)alt+f11再按f5全搞定。
這就跟蘋果當(dāng)年出了只有一個(gè)按鈕的鼠標(biāo),一群蘋果信徒對2鍵鼠標(biāo)大肆討伐,而思路正常的人都知道單鍵鼠標(biāo)有多么難用,更何況跟別的電腦完全不兼容,我一個(gè)幾十塊錢的鼠標(biāo)用完就扔掉,隨手就換一個(gè),你的單鍵鼠標(biāo)咋換?哈哈哈。現(xiàn)在人們對python的盲目崇拜,對VBA的大肆討伐,也是同樣的道理。是中了流行文化的度,務(wù)虛不務(wù)實(shí),舍近求遠(yuǎn)。
3、處理excel真的有必要用python嗎?
現(xiàn)在培訓(xùn)廣告的口號大多是:學(xué)了python,就能批量處理excel表格,提前下班找媽媽恰飯。但問題是,所有excel處理都不涉及任何復(fù)雜算法,不需要二叉樹啊堆棧啊定義對象啊什么的,頂多是業(yè)務(wù)邏輯繁瑣一點(diǎn),for循環(huán)if判斷嵌套得多一點(diǎn),變量定義得多一點(diǎn),僅此而已,而這些困難不論再哪種語言(python or vba)都是存在的,而python的主要優(yōu)勢在于人工智能和大數(shù)據(jù),請問貴公司貴崗位做兩個(gè)excel表用到啥人工智能了?無非就是批量建表,批量核對數(shù)據(jù),橫查豎查,批量打印,都是非常簡單的東西,而在處理這些任務(wù)時(shí),excel有著先天優(yōu)勢。即便你用了python處理這些任務(wù),你也只是用python的某個(gè)庫(xlwt、xlrd),其他的庫也基本不涉及,所以你也不能說自己會(huì)python了,你只能說自己會(huì)python的某兩個(gè)小包。再退一步說,python這些包都是第三方開發(fā)的,而vba是微軟親自維護(hù)的,你覺得哪個(gè)兼容性好?哪個(gè)做得更標(biāo)準(zhǔn)?
反正我用vba香的很,每天上班工作量是同事的好幾倍,假裝賊痛苦,但都按時(shí)下班;)
總結(jié)
以上是生活随笔為你收集整理的先学vba还是python-以Excel处理为目的学习python还是VBA?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用JavaScript+HTML实现双色
- 下一篇: 【python之父】:从他的经历中我又重