因此,我需要计算所有这些字段中的ž和č数。 例。 http://prntscr.com/jwz1em
我尝试了这段代码,但它给了我0
Function slova(iVal)
Dim output As Integer
output = Application.WorksheetFunction.CountIf(Range("A2:A11"), "ž")
End Function
答案 0 :(得分:1)
我发现您的代码存在多个问题:
slova = charCnt
中,没有将返回值分配给函数,因此无论什么情况,它都不会返回默认值0以外的任何值。Application.Volatile
,因此Excel单元格中使用的公式将需要导航到该单元格并按ENTER以在范围中的数据更改时强制进行更新。iVal
,该参数在任何地方都不会使用。Application.WorksheetFunction.CountIf
返回单元格的计数,因此每个单元格限制为1个字符。最重要的是,正确指定的参数为"*ž*"
这是我的解决方案,可以对所有出现在硬编码范围内的硬编码字符进行计数(必须恰好有1列)。
Function slova() As Long
Application.Volatile
Dim vData As Variant
Dim rowCounter As Long, charCnt As Long
Const myLetter As String = "ž"
vData = Range("A2:A11")
For rowCounter = LBound(vData) To UBound(vData)
If vData(rowCounter, 1) <> vbNullString Then
charCnt = charCnt + UBound(Split(vData(rowCounter, 1), myLetter))
End If
Next rowCounter
slova = charCnt
End Function
使用函数时,您还可以利用它,并将源范围用作参数,字符也是如此。