學習Excel技術,關注微信公眾號:
excelperfect
對於大多數人來說,使用Excel來做的工作就是在單元格中輸入數據,進行一些格式化製作成報表輸出,在這個過程中,可能會使用一些公式,可能會使用圖表展現數據,也可能會使用VBA進行一些自動化數據處理工作。
然而,越深入地使用Excel,會越多地了解Excel,就會發現Excel不僅僅這些,特別是看到精心設計製作的、清新的工作表,看到認為是專業的程序軟體開發的作品而實際上就是Excel時,會徹底顛覆你對Excel的認識。其實,就如Excel一樣,眼前經常用的就是最強大的,只是你沒有認識到,沒有認真研究而了解她,沒有將她發揮到極致的想法。
在專家眼中,Excel不只是普通的電子表格程序,更是能力非凡的應用程式開發平臺。在專家眼中,Excel已經為我們的應用需求構建了完整豐富的基礎,Excel中的任何部分都是作為程序組件或元素來對待的,只等著我們充分運用她們來擴展Excel的能力,方便地滿足多種多樣的需求,而無須從頭開始。
1. 工作表:用於展示
在日常工作中,我們會很自然地在工作表單元格中輸入數據,進行數據分析和處理,製作報表輸出,這是我們通常的做法。Excel豐富的內置功能,已讓我們的這種做法非常容易。
我們需要進一步做的是提高電子表格界面設計能力,靈活熟練地運用Excel提供的功能,充分發揮並拓展Excel所提供的功能,在工作表中添加一些結構,使其變為一個簡單易用的用戶界面。例如,下圖1所示的工作表,充分利用Excel自身的功能設計出了功能強大的用戶接口。
圖1
這裡使用了格式設置、名稱、樣式、單元格批註、數據驗證、條件格式等常用技術,創建了清晰的界面,提供了級聯列表、數據檢驗、動態顯示、錯誤提示等功能。簡單直觀,引導用戶正確完成輸入數據的填報工作。
2. 工作表:用於程序數據的存儲
在程序代碼中,在程序代碼處理中,經常要用到一些數據,而工作表就是一個天然的數據存放地,我們可以在工作表單元格中存放數字、文本、表格或圖片,供程序使用,而VBA程序代碼可以方便地訪問這些數據。同時,修改維護這些數據也非常簡單。
例如下圖2所示,創建工作表數據驅動的用戶窗體。
圖2
這裡的嚮導2中列表框項目數據讀取的是工作表中列A中的數據,在嚮導2中選取「Client Detail」後,嚮導3中會出現該指定項報表的選項,並讀取工作表中相應單元格中的數據作為其複選框選項。用戶窗體根據用戶的選擇讀取工作表中的相應數據,並動態添加相應的控制項,使用戶窗體更加靈活且功能更強大。
3. 工作表:一種聲明式程式語言
我們用程式設計師的眼光來看Excel工作表,單元格存放著變量的值,單元格地址就是變量,公式或函數就是語句,通過引用單元格來獲取或者計算得到相應的值。
也就是說,我們可以將Excel工作表公式當作是一種程式語言。IF函數可以等同於條件語句,Excel中的循環引用和迭代計算等功能的巧妙運用,可以等價實現循環結構語句。
Excel工作表就是一個實時的語言編輯器,在工作表單元格中輸入數據和公式後,Excel實時給出結果,並根據公式所依賴的單元格的變化實時更新數據。
Excel更擅長數字計算,VBA擅長通用的編程,將兩者合理結合運用,可以開發出高效的應用程式。
4. VBA與用戶窗體
VBA是一種專業的程式語言,內嵌於Excel中。在Excel提供的VBA語言專業編輯器(VBE)中,不僅可以使用VBA來充分Excel發揮更大的優勢和威力,而且可以利用用戶窗體設計專業的交互界面,擴展Excel的能力。《Excel專業開發(第2版)》中的主要內容就是講解VBA高級技術及應用程式設計和開發的專業方法的,有興趣的可以與我一起解讀這本書,提升編程實用技能。
5. Excel對象模型
我們在Excel中進行的各種操作,實際上是對相應對象的操作,例如常用的單元格操作,包括在單元格中輸入數據、設置格式等,就是對單元格對象的操作。Excel中對象經過層層組織,構成了Excel對象層次模型,其層次結構如下圖3所示。
圖3
Application對象代表Excel應用程式本身,有一個工作簿集合對象(Workbooks集合對象),包含所有打開的工作簿對象(Workbook對象),而每個Workbook對象有一個工作表集合對象(Worksheets集合對象),包含工作簿裡所有的工作表對象(Worksheet對象),而每個Worksheet對象又包含單元格區域對象(Range對象)。
通過對象模型,我們可以編程實現幾乎所有在Excel工作表界面中能夠完成的功能。而這些對象豐富的屬性、方法和事件可以使得一些非常複雜的應用程式開發變得相當簡單,開發者重點要考慮的是何時及如何將各種功能有效地組合在一起,而不是重新開發這些功能。
以上,就是Excel為我們編程開發提供的基本組件。
那麼,專家眼中的Excel用戶是怎麼分的呢?根據使用Excel與VBA的經驗和所掌握知識的程度,可以把Excel用戶分為五類。
1.Excel初級用戶:將Excel工作表當做存放數據、報表或進行簡單計算的工具,並且隨著Excel使用經驗的增加,其工作簿也會變複雜,會包含大量的工作表公式與函數、圖表和數據透視表等。
2.Excel高級用戶:熟悉Excel的各種功能,知道在何種情況下使用何種功能,能夠根據需要創建複雜的工作表,能夠解決工作表使用過程中遇到的問題,會使用VBA但並不專業。
3.VBA開發人員:精通VBA,在其工作簿中廣泛使用VBA代碼,相信所有問題都能用VBA解決,但因為對Excel缺乏充分的了解,所以不能很好地利用Excel的特性。在判斷何時使用Excel解決問題,何時使用VBA解決問題,以及何時將兩者結合來解決問題時,缺乏經驗。
4.Excel開發人員:利用大部分Excel內置功能並適當加入VBA代碼是他們解決問題的常用方式,但不願意使用其他語言或編程工具來改進自已的Excel解決方案。
5.專業Excel開發人員:能夠設計和開發各種基於Excel的應用程式,以Excel為核心,根據情況靈活地使用各種應用程式和程式語言,包括第三方ActiveX控制項、Office自動化技術、Windows API調用、外部資料庫以及各種獨立程式語言和XML技術等,所開發的程序高效、易用,具有很好的健壯性、可維護性和安全可靠性。
你屬於哪一類?