EXCEL的表函數(shù)也可以直接在VBA中直接調(diào)用執(zhí)行,具體調(diào)用格式如下:
實(shí)例:Range('d8') = Application.WorksheetFunction.CountIf(Range('A1:A10'), 'B')
調(diào)用方法2:變量對(duì)象=VBA.表函數(shù)(表函數(shù)參數(shù))
實(shí)例:Range('d8') = VBA. Ucase(Range('A1:A10'), Value)
(1)并非所有表函數(shù)都可以在VBA中予以調(diào)用,比如trunc,numberstring。表函數(shù)if()在VBA中,用if then或者iff()替代,而表函數(shù)的ROW()函數(shù),通過(guò)單元格屬性.row予以替代。
(2)表中使用函數(shù)和規(guī)則和VBA中使用函數(shù)的語(yǔ)法規(guī)則不一樣。比如單元格中,求和函數(shù)sum(A1:A3),在VBA中,通過(guò)application或worksheetfunction的調(diào)用時(shí)就和函數(shù)是sum(range(“A1:A3'))。這里,'A1:A3'字符串變?yōu)閞ange的一個(gè)參數(shù),而range()作為sum的參數(shù)。如果是某個(gè)一個(gè)單元格,也可以用cell(行號(hào),列號(hào))替代range()。值得注意的是,使用cells()時(shí),其行號(hào)和列號(hào)全部可變?yōu)樽兞?,而用range()參數(shù)為字符串,如果涉及變量,就需要進(jìn)行字符串組合的方式使之變?yōu)橐粋€(gè)區(qū)域參數(shù)。當(dāng)然,range()參數(shù)的字符串也可以通過(guò)cells替換,比如range(“A1:B4”)通過(guò)range(cells(1,1),cells(4,2))
(3)調(diào)用函數(shù)可以逐級(jí)調(diào)用。首先是application,其次是worksheetfunction,最后是application.worksheetfunction方式。
(4)實(shí)際的操作中,可能發(fā)現(xiàn),使用內(nèi)置的工作表函數(shù)并不一定是最快,最高效的,但無(wú)疑是最直接,最省事的??梢栽诓痪╒BA語(yǔ)言以及相關(guān)邏輯規(guī)則的前提下,迅速通過(guò)調(diào)用這些內(nèi)置函數(shù)實(shí)現(xiàn)目標(biāo)。
(5)上述調(diào)用方法返回的值可能是一個(gè)而錯(cuò)誤值,比如vlookup調(diào)用返回來(lái)沒(méi)找到結(jié)果,如果在VBA中將這個(gè)調(diào)用函數(shù)的值直接返回給一個(gè)變量可能報(bào)錯(cuò)。在賦給某個(gè)變量之前,要判斷是否為錯(cuò)誤值可以用application.isna()。
Excel函數(shù)和VBA函數(shù)的區(qū)別:
聯(lián)系客服