VBA自定義函式 計數滿足要求的單元格數量

2021-08-31 23:46:16 字數 1385 閱讀 6787

同事要求幫忙,做乙個計數需求,統計單元格內容中包含①、②、③至少有兩個或者合格的數量。

單元格裡內容有①②④⑤、①②④、①②③、合格等,如下圖:

這個計數需求是可以用countif函式直接處理,但是同事說公式太長了,容易亂,於是想了想,用vba自定義乙個函式解決,主要思路是通過instr依次查詢單元格內字串中是否有①、②、③,然後相加起來是否大於1,如果是則計1,如此迴圈單元格;對於「合格」,直接使用判斷語句,是計1,迴圈單元格;最終相加兩者總數,得出結果,符合。

**如下:

function countacc(arr3 as range)

dim lens as variant

dim count1 as integer

dim count2 as integer

dim c1 as integer

dim c2 as integer

dim c3 as integer

count1 = 0

count2 = 0

'dim arr3

'arr3 = array("②④", "①②④", "②③④", "②③④", "②③④")

for each lens in arr3

find1 = instr(lens, "①")

if find1 then

c1 = 1

else

c1 = 0

end if

find2 = instr(lens, "②")

if find2 then

c2 = 1

else

c2 = 0

end if

find3 = instr(lens, "③")

if find3 then

c3 = 1

else

c3 = 0

end if

c = c1 + c2 + c3

if c > 1 then

count1 = count1 + 1

end if

next

for each item in arr3

find4 = "合格"

if item = find4 then

count2 = count2 + 1

end if

next

countacc = count1 + count2

end function

他山之石 VBA自定義函式

vba自定義函式自己是最近才開始使用的。其好處是可在工作表中直接呼叫,很方便。這裡,這位老師總結的很好,學習了!1 什麼是自定義函式?在vba中有vba函式,我們還可以呼叫工作表函式,我們能不能自已編寫函式呢?可以,這就是本集所講的自定義函式 2 怎麼編寫自定義函式?我們可以按下面的結構編寫自定義函...

VBA使用者自定義函式

函式是一組可重複使用的 可以在程式中的任何地方呼叫。這消除了一遍又一遍地編寫相同的 的需要。這使程式設計師能夠將乙個大程式劃分成許多小的可管理的功能模組。除了內建函式外,vba還允許編寫使用者定義的函式。乙個vba函式可以有乙個可選的return語句。如果要從函式返回值,則可使用return語句。例...

VBA自定義函式 Minkowski距離

接觸vba第一天,寫了個閔可夫斯基距離 當r 1時,距離為曼哈頓距離 當r 2時,距離為歐幾里得距離距離 直線距離 當r 時,距離為切比雪夫距離 根據閔可夫斯基距離距離公式,在vba寫出以下 public function distance a as range,b as range,optiona...