先学vba还是python-以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香的很,每天上班工作量是同事的好幾倍,假裝賊痛苦,但都按時下班;)
總結
以上是生活随笔為你收集整理的先学vba还是python-以Excel处理为目的学习python还是VBA?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用JavaScript+HTML实现双色
- 下一篇: 生命,因为热爱所以敬畏