同事要求幫忙,做乙個計數需求,統計單元格內容中包含①、②、③至少有兩個或者合格的數量。
單元格裡內容有①②④⑤、①②④、①②③、合格等,如下圖:
這個計數需求是可以用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...