如何評價 VBA 語言?

office組件用的vba語言?


之前在紅十字會實習,財務報表非常規範,條目非常繁雜,但只有月份報表和年度報表,累計報表要手動計算。

一開始我試過用sum和if完成,後來發現每次都要完成新月份報表的複製粘貼。於是做了一名可恥的伸手黨,在網上抄了一個同一文件夾下多個文件數據求和的vba,順帶改了改數據,廣受好評。。。

我只想說兩點,第一vba對工作效率提升好大,基本重複操作都可以通過vba執行(這應該屬於腳本吧),很容易讓人眼前一亮,誤以為你會編程,第二office太強大了。

據說vba對懂編程的來說挺雞肋的,但對小白來講還是很好用的,網上很多現成的代碼。


為了excel的可視性而犧牲了讀寫和幾乎所有性能的一門語言。

為了excel而生的語言。

你讓我批量處理顏色還行。

你讓我用這個寫fx期權MC(SV下的)我都想罵娘。

各種奇怪的bug滿天飛……

一個月跑一次的model用這個還可以接受……

如果你的boss只看得懂表只能用這個的話……(幸虧我不是,逃

但因為歷史和載體原因,有其極其特殊的地位和功能

總而言之八個字:

垃圾語言|不可或缺

別說我不會用才來黑,利益相關:VBA演算法課第一個交卷班唯一一個滿分

最後忠告:千萬不要用VBA寫矩陣!!


建議大家不要使用這種影響價值觀的東西。

利益相關:阿里員工。


首先說一點我對「一種計算機語言」的看法。

對於絕大多數人來說,一種計算機語言,是一種工具。評價工具的好壞,離不開使用這種工具的目的、使用這種工具的效率以及最終的效果

在實際工作中遇到問題,使用最合適的工具解決問題,才是最關鍵的

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

回到題目

在我看來,VBA被開發出來的目的,本身就是為了協助office,提升office解決問題的能力

我認為,VBA這種工具的優勢在於:安裝成本低(Office自帶),學習成本低,解決問題快速

例如,在EXCEL中使用VBA,由於EXCEL本身就可以存儲數據,展示結果,並且自帶大量的公式,集成了很多解決方案,在VBA中調用起來非常方便。很多時候不需要額外使用代碼編寫演算法,直接調用公式,真是好用

對於一個經常使用EXCEL做分析工具的人來說,VBA可以幫助你解決很多問題,減少因為重複操作導致的時間浪費

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

說幾個我自己使用VBA的例子:

1. 做一款金額產品,需要測算不同參數下的現金流回報率,使用IRR公式。IRR本身就是Excel使用迭代演算法得出最好結果,如果想改變IRR的目標值,測算參數取值,只能使用「單變數求解」。這時需要大規模的測算,比如IRR取值50%-200%,每次改變1%,需要求出不同的參數最後繪製曲線。此時使用VBA簡單寫一個循環,非常快速的就能解決這個問題,而且可以循環利用

2. 製作日常報表,需要按照城市拆分下發給分公司,並且是一個長期的工作。這時一次性投入時間用VBA寫一個簡單的拆分器,是非常有效的解決方案

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

當然VBA在解決比較大和複雜問題時有一些劣勢,比如數據比較多的時候執行很慢。但是反過來說,這個時候你要考慮的不是是否應該使用VBA的問題,而是是否應該使用EXCEL的問題,不是嗎?

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

綜上,我對VBA的評價是,對於使用EXCEL或者office較頻繁的人來說,VBA是一門非常優秀的值得學習的語言。


工程師,經常做一點小計算。感覺VBA是最適合的神器,積分微分非線性方程循環迭代之類,不用考慮輸入輸出,還可以方便地做出圖線。相比於同時在用的fortran、C,幾百行的代碼輸入輸出要佔去一半,算完還得回到Excel來畫圖。


存在即合理!不必多言


只在excel里用過vba…

最近幫一個朋友寫了個vba函數,用來處理數據,複雜度O(n),效果還行,不過發現1萬個數據進去還ok,30萬進去數組會溢出…

總的來說,自己的事情,要麼直接在excel里敲公式(至少做做MC問題不大),要麼上其他語言,基本不考慮vba。


工作中大量使用Excel,利用VBA極大的提高工作效率,我取以下幾個工作內容為例子

①導入New part:接到New part文件後,需要由我和其他兩個部門共同完成相應的內容,最後由我提交。我做最後的匯總,利用VBA,根本不需要打開他們發送過來的文件,點個按鈕直接完成;

②Water Fall:做完數據分析後,要根據系統料號每周做一次Water Fall,如果沒有VBA,就在做好的表格中先查找到相應的料號,複製相應長度的日期(兩年by week,很長 ),然後切換到Water Fall工作簿,在二十幾個工作表中找到對應料號,粘貼到特定位置。很煩人而且很容易出錯,而通過VBA可以一步完成,大概五秒

③會經常從系統下載各種數據,做成各種形式的表格或報告,利用VBA可以極大簡化或一步完成。前幾天有個長期出差外地的協理給MPM部門成員寫了一個VBA程式,在他們下載數據後一步完成報告(不過她的程式有些問題無法運行,我去看了一下,很震驚代碼超級超級長,他們部門可能更需要VBA,搞得協理來給他們寫)

④還有其他很多地方了如果有人看再更


不是編程專家,但是編程能讓我的工作簡化規範很多。自己感覺VBA是個問題很多的語言,同時優點也太多,EXCEL,WORD,PPT之間調動起來效率確實是高,但是BUG也是特別的多。總體來說我的工作中相當關鍵,特別大的表格手動處理起來完全是要命,一個VBA提取出相關數據,畫成圖表,再標出重點。再一個VBA把圖錶轉存到PPT中,再轉存PDF。兩步下來就可以給客戶交報告了,老闆感覺驚嘆不已。


晚上來答


我想說 強擼灰飛煙滅

用VBA做計算還是要靈活的使用Excel本身提供的表格對象


辦公室人員的黑魔法。


大家都太專業了,以至於對VBA深深的不屑。

我的編程水平僅限於小霸王學習機開始玩些簡單BASIC編程,486上玩QBasic。沒有受過一天專業編程訓練,就是偶爾編些小程序解決些小問題或編些類似俄羅斯方塊的小遊戲。

後來的專業和工作都需要用到數據統計和數據整理工作,經常用到Excel。當我知道VBA存在的時候,我太興奮了,這簡直是為我量身訂做的。藉助著宏錄製,查看相關代碼,再加上Basic語言的基礎,進行改編,我可以實現我在數據處理中想做的任何事情。

儘管我編寫的程序,從專業角度沒有任何規範性和可讀性(比如變數想起一個,就隨意命名一個),但是它真真切切的大幅提高了我的工作效率,堪稱我最優秀的生產力工具。

Excel和Office其他組件功能之強大可以用深不可測來形容,而VBA讓我只需要最初級的編程基礎就可以在程序中隨意調用Excel、Word、PowerPoint幾乎全部的功能,同時擁有Visual Basic的相關對象和界面以及易用友好的程序編輯器。

這些對於一個初級編程人員和平時需要大量處理數據(達不到資料庫數量級別),已經足夠完美了。


感覺不錯。

配合自己程序的導入導出、列印,挺方便的


之前做的財務實習,

仗著會點VBA,

拿到了人生中第一封推薦信。


雖然過時,功能很弱,但由於是excel的內置功能,用起來很方便,所以還有生命力


怎麼說呢,我是個文科生,VBA是我目前唯一能使用且適用與我工作的的一種..算是代碼吧,個人覺得寫點小工具還是很方便的,就是速度略慢,不過也可能跟我本身代碼的質量也有關係,總的來說,好用,不太難學,應該是我個人對VBA的看法。


推薦閱讀:

怎麼評價 Idris 語言?
為什麼 Belleve的答案總是那麼高大上,想理解他的問題答案,需要哪些領域知識和前置知識?
slua,ulua,nlua,unilua這幾種unity3D的lua插件各有什麼優劣?

TAG:程序員 | 編程語言 | MicrosoftOffice | VBA |