【问题标题】:VBA Word count in range范围内的 VBA 字数
【发布时间】:2018-11-08 15:11:17
【问题描述】:

您好,我是 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。 非常感谢您的帮助。

【问题讨论】:

    标签: excel vba


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      如果您有最新版本的 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-17
        • 1970-01-01
        相关资源
        最近更新 更多