工作中經常在 excel 中使用公式,很多問題不是乙個函式可以解決的,往往是很多函式巢狀在一起。熟練以後,輸入很長很長的公式倒也不是什麼難事,就當是一次腦筋鍛鍊。但是閱讀上到底有點不方便,尤其是隔了很長時間再去看這個公式,又是一次腦筋鍛鍊,不如把工作中解決實際問題常用到的函式組合包裝成單一的自定義函式來用。
下面就總結一下如何在 excel 中自定義函式。
我這裡說的自定義函式(user defined functions)是在
vba裡編寫的。在
excel
視窗中,選擇
tools
->
macro
->
visual
basic
editor
。在 microsoft
visual
basic
視窗中,選擇
insert
->
module
,準備工作就做好了。現在編寫乙個最簡單的函式。在模組視窗輸入:
function hello ()按儲存按鈕,切換回 excel 視窗(快捷鍵 alt+f11),隨便找個單元格輸入hello="hello, world!"
end function
=hello()
,就可以看到效果了。
編寫自定義函式,一定要了解宣告和定義函式的語法,有了初步的實戰經驗後,再來看一下定義函式的語法。function 語句用來宣告自定義的函式。語法:
[public|private | friend] [static]functionname [(arglist)] [astype]語法包含的部分雖然多,但大多數都是可以省略的,不可或缺的就兩條:[statements]
[name=expression]
[exit function]
[statements]
[name=expression]end function
function name
和 end function
,連函式體都是可以省略的。
name
是我們給自定義函式起的名字。
function name
和 end function
一開一合,打下了自定義函式的框架。
對其它可選部分也作一下說明。
arglist 是引數列表,雖然可以省略,但是我們編寫的函式如果不需要傳入引數,意義就不大了。
type 表示函式返回值的資料型別,可以是 byte,boolean,integer,long,currency,single,double,date,string,object,variant,或使用者定義的型別。注意,省略
as type
不表示沒有返回值,只是不顯式提供返回值的型別。
statements 這個就是函式體了,自定義函式的精髓。
name = expression 這句用來提供返回值。如果沒有向函式名賦值,函式就返回乙個預設值:返回型別是數字的返回 0,返回型別是字串的返回零長字串(""),返回型別是 variant 的返回 empty,返回型別是物件引用的的返回 nothing。
有幾個注意事項:
函式的宣告不能出現在另乙個函式或子例程體內。函式裡的變數最好顯式宣告以免跟其它變數衝突,在模組級使用 option explicit 語句來強制變數顯式宣告。
在 Excel 中編寫自定義函式 返回多個值
前面講了自定義函式的基本框架和如何傳遞不定引數,這一篇講如何返回多個值。返回多個值,基本上就可以理解為返回陣列。我們自定義的返回陣列的函式,跟 excel 自帶的陣列函式一樣,需要按 ctrl shift enter 輸入。在返回陣列這件事上,我們需要決定返回的陣列的維度。有下面幾種情況 第一種情況...
自定義函式 Excel之自定義函式
在excel中,當系統函式不能滿足我們的需求時候,我們可以使用vba自定義函式,如抓取網頁資料,翻譯詞彙,手機號歸屬地查詢等。下面將介紹2個自定義函式,idymd函式 身份證年月日性別 通過身份證號,返回性別,出生年月日。語法 idymd id 引數 id,身份證號,預設身份證長度18位。vba 如...
Excel 自定義函式
假設我們在excel中有以下需求 你可以巢狀使用if函式,判斷每乙個分數屬於哪乙個區間。但是,4層if會不會很容易出錯 如果是5個區間,甚至是10個區間呢?巢狀使用10個if不太現實,也很容易出錯吧。其實在excel中,我們可以自定義自己的函式,使用vb實現 下面的內容就介紹如何在excel中新增自...