国产一区二区欧美精品免费-欧美国产日韩在线视频-欧美亚洲国语精品一区二区-欧美激情五月综合啪啪-国产69精品麻豆久久久久-亚洲人成精品久久久久桥网站-欧美刺激肥熟在线视频-十七岁日本免费完整版BD-黑夜在线拖拽不卡第一页

`
閱: 3908 | 回: 1
自定義Excel函數(shù)-自定義Excel Excel基礎(chǔ) , 編號:0550 快速回復(fù)
發(fā)表于2015/10/27 12:46:32 樓主 
頭像 等級:初學(xué)者
積分:0
財富值:0.00
身份:普通用戶
自定義Excel函數(shù)-自定義Excel

BA之自定義函數(shù) 
這一貼說的是自定義函數(shù)。Excel本身已自帶了很多函數(shù),供我們使用,但有些問題用原有的函數(shù)解決起來很復(fù)雜,甚至是無能為力,但有了VBA,可能就可以現(xiàn)實。 
怎樣自定義一個函數(shù)?下面我們建一個名為RangeCount和函數(shù),用來統(tǒng)計給定單元格數(shù)量。上貼說過怎么插入一個宏(子程序),其實細心的朋友就會發(fā)現(xiàn),里面有一項函數(shù)的選項,就是用這個添加了!鍵入你需要的名稱RangeCount,即會自動生成一個函數(shù)的頭Public Function RangeCount()和尾End Function!這時大家可以知道,子程序都是以Sub關(guān)鍵字開頭,而函數(shù)是以Function關(guān)鍵字開頭。 
怎樣給自定義函數(shù)傳遞參數(shù)?用過Sum函數(shù)的朋友都知道Sum的用法,在單元格中鍵入=Sum(A1:A10)就能對A1:A10進行求和,那么怎么讓我們的自定義函數(shù)也有此功能呢,其實很簡單,只要在Function RangeCount()中的(與)之間加入即可,象現(xiàn)在我們要給這個自定義函數(shù)傳遞一個單元格的參數(shù),即在()間加入XRan As Range即可。其中XRan就是我們給這個參數(shù)設(shè)定的名稱,As 是關(guān)鍵字,而Range就是給定參當數(shù)的類型(單元格類型),更詳細的說明可以參見VBA的幫助(上貼有說明怎么用幫助了吧:))。 
怎么樣自定義函數(shù)加入功能?其實也和子程序一樣,在函數(shù)的頭Public Function RangeCount()和尾End Function之間就可以加入代碼,我們這個函數(shù)的代碼只有一句:RangeCount = XRan.Count 
怎么樣讓自定義函數(shù)返回值?從上面的例子看出,只要將函數(shù)的名稱設(shè)定為需要返回的值即可。 
怎么當前工作表中使用自定久函數(shù)?使用自定義函數(shù)的方法其實和一般函數(shù)的方法是一樣的,在單元格中鍵入=RangeCount(A1:A10),即可以得到值(10)!當然,也可以通過菜單插入/函數(shù),在類別中選擇用戶自定義里找到你自定義的函數(shù)。 
怎么在工作表里使用別的工作表里的自定義函數(shù)?從菜單插入/函數(shù),類別中的用戶自定義里,可以看到,如果這個自定義函數(shù)不是在當前的工作表里的,函數(shù)會變成——文件名.xls!函數(shù)名了,這樣我們使用上面的自定義函數(shù)就變成=Book1.xls!RangeCount(A1:A10)(設(shè)我們剛才保存文件為Book1)。 
怎么樣在任何工作表中使用自定義函數(shù)?自定義了函數(shù)后,每一次使用都要打開這個工作簿,不方便,那么怎么樣讓任何工作簿都能使用這個自定義函數(shù)呢?有兩個方法,第一個就是把代碼寫在上面說到的個人宏工作簿中,因為個人宏工作簿都是隨Excel自動打開的,那么我們就可以通過PERSONAL.XLS!函數(shù)名來使用這個自定義函數(shù)。第二個方法就是加載宏(關(guān)于加載宏的其它用法和具體說明以后還會有專門的一貼),將包含這個自定義函數(shù)的工作簿,去掉無關(guān)的內(nèi)容(不去當然也行啦!)后另存為加載宏(不會不知道怎么另存吧,汗!后注!),這樣在菜單工具/加載宏里,將相關(guān)項前打勾,即可使用該自定義函數(shù),這時使用函數(shù)的方法只要直接用函數(shù)名即可,如=RangeCount(A1:A10)。 
最后再說一點大家少遇到的現(xiàn)象:用過VBA后,大家知道在同一模塊中是不能有相同名稱的子程序與函數(shù)的,如果有,運行時會提示存在二義性!但在不同模塊中,卻能有相同甸稱的函數(shù)存在,那么怎么使用這樣的函數(shù)呢?從菜單插入/函數(shù),類別中的用戶自定義里,我們可以看出這樣的函數(shù)變成模塊名.函數(shù)名了,這樣我們的使用方法就是=模塊1.RangeCount(A1:A10)或=模塊2.RangeCount(A1:A10)。 
后注:詳細的另存為加載宏的過程,點擊菜單/文件/另存為,在文件類型里選擇Microsoft Excel加載宏項,這時文件夾自動轉(zhuǎn)到保存加載宏的AddIns,再保存即可。 
附:上面RangeCount的完整代碼: 
Function RangeCount(XRan As Range) 
RangeCount = XRan.Count 
End Function 
下面給出兩個自定義函數(shù),按給顏色求和SumColor與計數(shù)CountColor 
Function SumColor(rColor As Range, rSumRange As Range) 
Dim rCell As Range 
Dim iCol As Integer 
Dim vResult 
Application.Volatile 
iCol = rColor.Interior.ColorIndex 
 For Each rCell In rSumRange 
 If rCell.Interior.ColorIndex = iCol Then 
 vResult = WorksheetFunction.Sum(rCell) + vResult 
 End If 
 Next rCell 
SumColor = vResult 
End Function 

Function CountColor(rColor As Range, rSumRange As Range) 
Dim rCell As Range 
Dim iCol As Integer 
Dim vResult 
Application.Volatile 
iCol = rColor.Interior.ColorIndex 
 For Each rCell In rSumRange 
 If rCell.Interior.ColorIndex = iCol Then 
 vResult = vResult + 1 
 End If 
 Next rCell 
CountColor = vResult 
End Function

我的個性簽名
發(fā)表于 2016/11/21 16:15:06   
頭像 等級:學(xué)者
積分:53
財富值:5
身份:普通用戶
看看
我的個性簽名

快速回復(fù)

目前不允許游客發(fā)表,請 登錄 注冊 后再發(fā)貼。