VBA字数范围

时间:2018-11-08 15:11:18

标签: excel vba

您好,我是excel的初学者,所以请忍受我的无知。 最近,我发现自己需要一个对一个单元格范围内的单词数进行计数的函数(当然,将空单元格计数为0)。 在网上冲浪时,我发现了以下简单的VBA代码:

Function intWordCount(rng As Range) As Integer
    intWordCount = UBound(Split(Application.WorksheetFunction.Trim(rng.Value), " "), 1) + 1
End Function

我发现这非常有用,因为我可以使用

=intwordcount(A2)+intwordcount(B2)+intwordcount(C2)

excel功能栏中的

,用于总计3个单元格中包含的单词数,而不计算空单词数。

问题是我现在需要对一列中的大范围单元格执行此操作,并且只需使用

=intwordcount(A2:A18)

不起作用。 我认为错误是,它尝试将函数视为单个大单元格而应用到范围上,而我希望它将该函数应用于范围内的每个单元格并求和每个输出以求总和。 如果有人能帮助我,因为我不知道解决方案,我将不胜感激。 我正在使用Excel 2016。 非常感谢您的协助。

2 个答案:

答案 0 :(得分:1)

遍历单元格并应用相同的逻辑。

该功能现在适用于单单元格范围和多单元格范围

Function intWordCount(rng As Range) As Integer

Dim MyCell as Range

For Each MyCell in rng
    intWordCount = intWordCount + UBound(Split(Application.WorksheetFunction.Trim(MyCell.Value), " "), 1) + 1
Next MyCell

End Function

答案 1 :(得分:1)

如果您具有最新版本的Excel:

Function intWordCount(rng As Range) As Long
    Dim wf As WorksheetFunction, s As String
    Set wf = Application.WorksheetFunction

    s = wf.TextJoin(" ", True, rng)
    intWordCount = UBound(Split(wf.Trim(s), " "), 1) + 1
End Function