在Word中,有一个“字数统计”功能(如下图1所示),可以统计文档或者所选文档区域中字数、字符数、行数、段落数等信息。
图1
选择文档中要统计的文本区域,单击“字数统计”命令,会弹出如下图2所示的统计信息。
图2
我们可以使用VBA编写一段代码,在Excel中实现所选单元格或单元格区域中的字数信息分类统计:
Sub TotalSelectionCharNum()
Dim str As String
Dim ChineseChar As Long
Dim Alphabetic As Long
Dim Number As Long
Dim Blank As Long
Dim AlpAndNum As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim rng As Range
For Each rng In Selection
j = j + Len(rng.Value)
For i = 1 To Len(rng)
str = Mid(rng.Value, i,1)
If str Like "[一-龥]" = True Then
'汉字累加
ChineseChar =ChineseChar + 1
ElseIf str Like"[a-zA-Z]" = True Then
'字母累加
Alphabetic =Alphabetic + 1
'字母和数字在一起被认为是一个字
If i <> 1 And i= k + 1 Then AlpAndNum = AlpAndNum + 1
k = i
ElseIf str Like"[0-9]" = True Then
'数字累加
Number = Number + 1
If i <> 1 And i= k + 1 Then AlpAndNum = AlpAndNum + 1
k = i
ElseIf str Like "" = True Then
Blank = Blank + 1
End If
Next
Next
MsgBox "所选单元格区域中共有字符数(不计空格)" & _
j - Blank & "个,其中:" & vbCrLf & _
"汉字:" & ChineseChar &"个" & _
vbCrLf & "字母:" & Alphabetic &"个" & _
vbCrLf & "数字:" & Number & "个" & _
vbCrLf & "- - -- - - - - -" & _
vbCrLf & "空格:" & Blank & "个" & _
vbCrLf & "- - -- - - - - -" & _
vbCrLf & "所选单元格区域中共有字数(不计空格)" & _
j - Blank - AlpAndNum& "个", _
vbInformation, "字数统计"
End Sub
选择工作表中的单元格区域,运行TotalSelectionCharNum过程,得到字数统计信息如下图3所示。
图3