如何在VBA中计算特定字符

时间:2018-06-20 02:05:18

标签: vba excel-vba excel

因此,我需要计算所有这些字段中的ž和č数。 例。 http://prntscr.com/jwz1em

我尝试了这段代码,但它给了我0

Function slova(iVal)
Dim output As Integer
output = Application.WorksheetFunction.CountIf(Range("A2:A11"), "ž")
End Function

1 个答案:

答案 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

使用函数时,您还可以利用它,并将源范围用作参数,字符也是如此。