據我所知,Excel不會讓你在vba函數(不是SUB或SUBROUTINE)中使用WorksheetFunctions。有沒有辦法在FUNCTION中使用WorksheetFunctions?如果沒有,是否有簡單的替代方法來獲得與COUNTA函數相同的結果?有誰知道爲什麼WorksheetFunctions似乎沒有相處的自定義功能?Excel VBA WorksheetFunction在自定義函數中(不是子)
Function CountIfsFast(range1 As range, val1, Optional range2 As range, Optional val2)
rangesize = WorksheetFunction.CountA(range1)
range1array = RangetoArray(range1)
range2array = RangetoArray(range2)
matchcount = 0
For i = 0 To rangesize
If range1array(i) = val1 Then
If range2array(i) = val2 Then
matchcount = matchcount + 1
End If
End If
Next i
CountIfsFast = matchcount
End Function
更新:我想出了問題,排序。請參閱下面的答案。
如果'range1'已經是一個範圍對象,'CountA'行應該是'rangesize = WorksheetFunction.CountA(range1)' – 2013-05-06 16:35:12
只是谷歌之前作出任何假設:) – Santosh 2013-05-06 16:37:03
你是根據你的假設?你的功能不起作用嗎?它似乎很有可能在其他地方出錯。例如,代碼似乎沒有考慮到'range2'或'val2'沒有被傳入,或者錯誤可能在'RangeToArray'中。在第一行中放置一段時間,然後嘗試單步執行該功能。 – 2013-05-06 17:29:30