VBA及EXCEL函數問題解答

首先歡迎眾多的朋友來我這個平臺,或是學習,或者提出問題,我都歡迎。為了更好地和大家交流,分享知識,我會不定期的集合朋友提出的各種問題,選擇其中有代表性的做一期專題,所以,以後大家有問題可以提,很可能下期就有你提出的問題了。當然,由於篇幅有限不可能面面俱到,沒有照顧到的朋友還請諒解。

這期共解答有三個問題:

問題一 如果程序中所有變量,都不事先定義,有什麼不好?(VBA)

問題二 公司如何從中選拔出年齡小於或者等於30歲,或者業績大於或者等於180萬的人員 (EXCEL函數)

問題三 A列姓名,B列日期,C列當月工資,求所有人分年度工資(2013-2018年)

下面逐一解答:

問題一 如果程序中所有變量,都不事先定義,有什麼不好?(VBA)

對於這個問題,我先要解釋幾個概念:動態語言、靜態語言;動態類型語言、靜態類型語言

1、動態語言

是一類在運行時可以改變其結構的語言,例如新的函數、對象、甚至代碼,可以被引進,已有的函數可以被刪除或是其他結構上的變化。通俗點說就是在運行時,代碼可以根據某些條件改變自身結構。主要動態語言:Object-C、C#、JavaScript、PHP、Python、Erlang。

2、靜態語言

與動態語言相對應,運行時結構不可變的語言就是靜態語言。如Java、C、C++。

3、動態類型語言(Dynamically Typed Language)

動態類型語言的數據類型不是在編譯階段決定的,而是把類型綁定延後到了運行階段。主要語言:Python、Ruby、Erlang、JavaScript、swift、PHP、Perl。

4、靜態類型語言(Statically Typed Language)

靜態語言的數據類型是在編譯期間(或運行)之前確定的,編寫代碼的時候要明確確定變量的數據類型。主要語言:C、C++、C#、Java、Object-C。

由上面的講解可以知道,其實動態類型語言和動態語言是完全不同的兩個概念。

動態類型語言,是指在運行期間才去做數據類型檢查的語言,說的是數據類型。

動態語言,說的是運行時改變結構,說的是代碼結構。我們常常指程序的編寫,其實說的都是靜態類型語言和動態類型語言。

靜態類型語言的優缺點:

優點:其結構非常規範,便於調試,方便類型安全;

缺點:為此需要寫更多的類型相關代碼,導致不便於閱讀、不清晰明瞭。

動態類型語言的優缺點:

優點:在於方便閱讀,不需要寫非常多的類型相關的代碼;

缺點:不方便調試,命名不規範時會造成讀不懂,不利於理解等。

很顯然VBA是屬於靜態語言的範疇,其變量是需要定義的,但他的語言類型中有個類型是變體型數據,符號Variant,變體型數據是一種特殊的數據類型,幾乎可以用於保存所有其它數據類型的數據。可以簡單地理解為:當不知道變量所要表示的數據是什麼類型時,就把它定義為Variant。對於數字,此類型數據佔位16字節,可以存儲DOUBLE範圍內任何值;對於文本佔位22字節。

那麼是不是我們在寫程序的時候可以不事先定義就可以呢?

首先在上述我們的分析中VB是靜態類型語言的範疇,變量理應事先定義。

其次,如果在使用過程中沒有數據類型,變量講定義為Variant類型,而此類型佔用的空間較大(16或22字節),這將影響程序的性能。如:整型 Integer,佔用兩個字節;長整型 Long,佔用4個字節;單精度浮點型 Single,佔用4個字節;雙精度浮點型 Double,佔用8個字節.要遠比Variant類型的數據佔用的內存少。

第三,對於數組,必須要定義範圍數組界標的範圍,否則程序會報錯。

問題二 如果公司想從中選拔出年齡小於或者等於30歲,或者業績大於或者等於180萬的人員 (EXCEL函數)

這個問題不做過多的講解,請參考下面的截圖公式,常看我文章的朋友很容易會理解:

VBA及EXCEL函數問題解答

問題三 A列姓名,B列日期,C列當月工資,求所有人分年度工資(2013-2018年)

此問題沒有清楚地表達要解決的問題,請讀者朋友進一步寫清要提問的問題。暫不做解答。

好了,三個問題回答完畢。

今日內容迴向:

1 什麼是靜態類型語言,什麼是動態類型語言。

2靜態語言和和靜態類型語言是否一樣?

3 VBA 屬於哪類語言的範疇?


分享到:


相關文章: