Excel中的自定義函數(自定義函數的基礎內容)

最近和網友溝通交流Excel問題,好些問題都沒法直接實現,因此用了很多自定義函數,也給頭條裡的朋友寫過幾個自定義函數(比如顏色計算的函數、提取不重複內容的函數、漢字轉拼音的函數……

)。


在辦公過程中,總需要把複雜的事情簡單解決,於是用到了VBA代碼。用VBA解決一些手工辦起來繁瑣重複的事情,又快又準又好。是便捷高效。

今天就和你們分享下Excel的自定義函數。詳細內容如下:

1、什麼是自定義函數;

2、自定義函數怎麼使用;

3、怎樣讓自定義函數可以嵌套內置函數;

4、怎樣設置客可忽略的函數參數;

5、私有與公有屬性自定義函數的區別;

6、自定義函數放在模塊和工作表中的區別;


一、什麼是自定義函數

自定義函數:這也是一種函數,用戶根據自己的需求,為完成特定的功能而自己編寫的函數代碼。有別於Excel自帶的函數,所以叫做自定義函數。Excel自帶的函數叫做內置函數。

自定義函數的代碼結構

Function 函數名稱(函數參數)

實現函數功能的代碼

End Function

自定義函數的好處:
1、將複雜的問題簡單化,碰到相同的,或類似的問題,修改參數就OK了;
2、可以重複使用,不用每用一次都寫大段的代碼,直接一句函數和參數就可以了;
3、需要修改時,只修改函數內的代碼即可,不用再每一個使用的地方都修改;
4、自定義函數可以在工作表中像自帶公式一樣使用,也可以在窗體過程中調用。


二、自定義函數怎麼使用

自定義函數的代碼,一般放在VBE編輯器的【模塊】中。在模塊中設置好代碼後,就可以在工作表中直接使用,就像使用Excel內置函數一樣(效果見下圖)。

Excel中的自定義函數(自定義函數的基礎內容)

自定義函數的使用


三、怎樣讓自定義函數可以嵌套內置函數

有些時候,我們需要將像使用內置函數一樣,進行一些函數的嵌套計算,如何才能在自定義函數中實現與內置函數的嵌套使用呢?我們先看下圖:

Excel中的自定義函數(自定義函數的基礎內容)

內置函數嵌套

如動圖演示中所示:

1、當函數的第一個參數申明為Range型時,用VLOOKUP函數提取數據後進行字符串提取,會顯示錯誤值。這是由於VLOOKUP函數的結果,是一個具體的值,其類型不是Range,所以結果會出錯;

2、讓我把函數第一個參數的類型修改為Variant型時,就可以嵌套計算;

3、當我把函數的第一個參數變量類型刪除時,也可以正常計算。

4、這裡的Variant,是什麼意思呢?Variant就是可變的數據類型,可以存放任何數據(不設置變量類型,則默認就是Variant,第三種演示結果);

5、當函數參數類型為Range時,可以與內置函數的OFFSET、INDEX、INDIRECT函數嵌套,因為這幾個函數時引用函數,返回的內容是單元格,和Range類型是一樣的。

擴展:既然Variant類型是萬能的,在實際使用中,在申明變量時,可否就不用申明變量類型呢?

(先透露下,這個話題是我下篇文章的內容,這裡只做簡單介紹)

解答:在有速度要求和空間限制的情況下不要用variant.,因為variant類型數據佔用字符多,所以一般人很少用。.vba默認未定義的數據類型是variant. 有這個默認我就懶得定義數據類型直接用變量這樣寫代碼省時間,但是代碼運行會慢,如果你電腦配置足夠好,那就不用考慮節省空間的問題。


四、怎樣設置可以忽略的函數參數

要設置自定義函數可忽略的參數,可以在參數前面添加【Optional】,這裡的Optional就是設置可選參數。寫法如下:

Function 函數名稱(參數1,Optional 參數2)

實現函數功能的代碼

End Function

1、可選參數效果1:

Excel中的自定義函數(自定義函數的基礎內容)

在效果1中,我們設置函數的第二參數為可選參數,不寫第二參數,內容就直接合並;設置了第二參數,內容就用連接符全部連接起來。

2、可選參數效果2:

Excel中的自定義函數(自定義函數的基礎內容)

在效果2中,我們設置函數的第二參數默認值,不寫第二參數,內容就用默認連接符合並;設置了第二參數,內容就用設置的連接符合並起來。


五、自定義私有與公有函數

Private:定義私有屬性,只能在函數所在的模塊中使用;

Public:定義公有屬性,整個程序都能使用(若未註明Private,則默認是Public)。

注意::

1、以上概念,對SUB過程也是一樣的效果;

2、只要自定義函數的代碼在模塊中,無論是私有還是公有,都不影響在工作表中的使用;

3、所以,這裡的私有和公有,僅在於用VBA代碼調用函數上的差異。

下面我用一個示例展示下:

Excel中的自定義函數(自定義函數的基礎內容)

圖中展示了三個效果:

1、將函數定義為私有函數時,在工作表中可以正常使用;

2、將函數定義為私有函數時,在另一個模塊中就無法調用;

3、將函數的屬性修改為公有時,在另一個模塊中就可以正常使用了。


六、自定義函數放在模塊和工作表中的區別

都是在VBE編輯器中,將代碼放在模塊中,和把代碼放在工作表代碼中,有什麼區別呢?看圖:

Excel中的自定義函數(自定義函數的基礎內容)

上圖演示了兩個效果:

1、當自定義函數代碼在模塊中時,在工作表中使用正常;

2、當把自定義函數代碼放到工作表代碼區域中時,在工作表中失效。

所以,我們要使用自定義函數,就需要將自定義函數的代碼放在模塊中。


今天,關於自定義函數的基礎內容,包含了函數代碼的寫法、使用,怎麼樣可以讓自定義函數嵌套內置函數,怎麼樣設置自定義函數的可選參數、怎麼樣設置自定義函數的參數默認值等。希望能對各位朋友有所幫助。


我是上班下班,因為愛好辦公軟件、喜歡分享。所以來到這裡將我的學習心得和踩過的一些坑,和大家聊聊,希望大家學習我成功的經驗,避開我踩過的坑。我和你們一起進步。

好了,今天就聊到這裡,感謝各位朋友的關注和支持。

如果你喜歡我分享的內容,請點個贊支持下;

如果你覺得我分享的內容對你有幫助,可以關注我;

如果要看我以前分享過的好玩的內容,大家可以去我的主頁查看歷史文章。


分享到:


相關文章: