關(guān)于Like運算符的使用
分類(lèi):ExcelVBA>>VBA語(yǔ)法
引子
公司要求按照已經(jīng)用Excel制作好的固定的格式上交報表,很簡(jiǎn)單,不一會(huì )就完成并上交了,結果,沒(méi)多久報表被退回,原因是報表中有些單元格中的字符數超過(guò)了規定的100個(gè),只好重做。當時(shí),首先想到的問(wèn)題就是如何知道單元格中的字符數,這可用Excel所提供的Len工作簿函數簡(jiǎn)單的完成。事后又仔細思考了一下,在Word中有字數統計功能,但在Excel中沒(méi)有,能否摸仿Word中的字數統計功能,對Excel中的單元格或者所選的單元格區域進(jìn)行字數統計呢?進(jìn)一步說(shuō),將單元格或者所選的單元格區域中的漢字、數字、字母等進(jìn)行分類(lèi)統計。當然,這些都可使用工作簿函數實(shí)現,下面所講解的內容是使用VBA來(lái)實(shí)現上述功能。
在Excel中實(shí)現字數統計
(1) 使用Len工作簿函數進(jìn)行簡(jiǎn)單的字數統計
‘① - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
‘對當前單元格進(jìn)行字數統計
Sub TotalCellCharNum()
Dim i As Long
i = Len(ActiveCell.Value)
MsgBox "當前單元格的字數為:" & Chr(10) & i
End Sub
‘② - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
‘對所選的單元格區域進(jìn)行字數統計
Sub TotalSelectionCharNum()
Dim i As Long
Dim rng As Range
For Each rng In Selection
i = i + Len(rng.Value)
Next rng
MsgBox "所選單元格區域的字數為:" & Chr(10) & i
End Sub
(2) 使用Like運算符進(jìn)行較復雜的字數統計
‘③ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
‘對當前單元格中的文本分類(lèi)進(jìn)行字數統計
Sub SubTotalCellCharNum()
Dim str As String, ChineseChar As Long
Dim Alphabetic As Long, Number As Long
Dim i As Long, j As Long
j = Len(ActiveCell.Value)
For i = 1 To Len(ActiveCell)
str = Mid(ActiveCell.Value, i, 1)
If str Like "[一-龥](méi)" = True Then
ChineseChar = ChineseChar + 1 ‘漢字累加
ElseIf str Like "[a-zA-Z]" = True Then
Alphabetic = Alphabetic + 1 ‘字母累加
ElseIf str Like "[0-9]" = True Then
Number = Number + 1 ‘數字累加
End If
Next
MsgBox "當前單元格中共有字數" & j & "個(gè),其中:" & vbCrLf & "漢字:" & ChineseChar & "個(gè)" & _
vbCrLf & "字母:" & Alphabetic & "個(gè)" & _
vbCrLf & "數字:" & Number & "個(gè)", vbInformation, "文本分類(lèi)統計"
End Sub
‘④ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
‘對所選的單元格區域中的文本分類(lèi)進(jìn)行字數統計
Sub SubTotalSelectionCharNum()
Dim str As String, ChineseChar As Long
Dim Alphabetic As Long, Number As Long
Dim i As Long, rng As Range, j As Long
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 "[一-龥](méi)" = True Then
ChineseChar = ChineseChar + 1 ‘漢字累加
ElseIf str Like "[a-zA-Z]" = True Then
Alphabetic = Alphabetic + 1 ‘字母累加
ElseIf str Like "[0-9]" = True Then
Number = Number + 1 ‘數字累加
End If
Next
Next
MsgBox "所選單元格區域中共有字數" & j & "個(gè),其中:" & vbCrLf & "漢字:" & ChineseChar & "個(gè)" & _
vbCrLf & "字母:" & Alphabetic & "個(gè)" & _
vbCrLf & "數字:" & Number & "個(gè)", vbInformation, "文本分類(lèi)統計"
End Sub
在這里使用了Like運算符實(shí)現指定字符的查找,效果圖01所示。


示例文檔見(jiàn) 統計字數.xls。


下面介紹Like運算符的語(yǔ)法及一些應用示例,來(lái)說(shuō)明Like運算符的功能。其中關(guān)于Like運算符語(yǔ)法的介紹,也可參見(jiàn)《VBA的運算符和表達式》一文。




Like運算符的使用及示例




小結
上面對Like運算符的相關(guān)知識進(jìn)行了介紹,在編寫(xiě)代碼的過(guò)程中,可以靈活使用Like運算符。例如,可以用來(lái)進(jìn)行字符串的比較,然后進(jìn)行相應的統計或者執行進(jìn)一步的操作,或者用來(lái)判斷用戶(hù)輸入是否正確,以判斷程序是否向下運行,等等
聯(lián)系客服
微信登錄中...
請勿關(guān)閉此頁(yè)面
