Function IsLike(strText As String, pattern As String As Boolean
IsLike = strText Like pattern
End Function
Function IsChinese(strText As String As Boolean
Dim i%, h$
h = Hex(Asc(strText
If Asc(Left(h, 1 >= 66 And Asc(Left(h, 1 <= 70 Then
IsChinese = True
End If
End Function
Function StringType(strText As String, Optional outPutType As Integer = 1, Optional sumVar As Boolean = False As Variant
Dim strtemp As String, blnArray(1 To 5 As String, strPreType As Integer
Dim intNum As Integer, startPos As Integer, intlen As Integer
Dim strArray As Variant, strCompare1 As String, strCompare2 As String, dblSum As Double
If sumVar = True And Not (outPutType <> 2 Or outPutType <> 4 Then sumVar = False
For i = 1 To Len(strText
strtemp = Mid(strText, i, 1
If i > 1 Then strCompare1 = WorksheetFunction.Asc(Mid(strText, i - 1, 3
strCompare2 = WorksheetFunction.Asc(Mid(strText, i, 2
If WorksheetFunction.Dbcs(strtemp = strtemp Then
strtemp = WorksheetFunction.Asc(strtemp
If IsLike(strtemp, "[0-9]" Or IsLike(strCompare1, "[0-9].[0-9]" Or IsLike(strCompare2, "-[0-9]" Then
If strPreType = 4 Then
blnArray(4 = Left(blnArray(4, Len(blnArray(4 - 1 & intNum
Else
intNum = 1
blnArray(4 = blnArray(4 & "- " & i & "/" & intNum
End If
strPreType = 4
intNum = intNum + 1
ElseIf IsLike(strtemp, "[a-zA-Z]" Then
If strPreType = 5 Then
blnArray(5 = Left(blnArray(5, Len(blnArray(5 - 1 & intNum
Else
intNum = 1
blnArray(5 = blnArray(5 & "- " & i & "/" & intNum
End If
strPreType = 5
intNum = intNum + 1
ElseIf IsChinese(strtemp Then
If strPreType = 1 Then
blnArray(1 = Left(blnArray(1, Len(blnArray(1 - 1 & intNum
Else
intNum = 1
blnArray(1 = blnArray(1 & "- " & i & "/" & intNum
End If
strPreType = 1
intNum = intNum + 1
Else
strPreType = 0
End If
Else
If IsLike(strtemp, "[0-9]" Or IsLike(strCompare1, "[0-9].[0-9]" Or IsLike(strCompare2, "-[0-9]" Then
If strPreType = 2 Then
blnArray(2 = Left(blnArray(2, Len(blnArray(2 - 1 & intNum Else
intNum = 1
blnArray(2 = blnArray(2 & "- " & i & "/" & intNum
End If
strPreType = 2
intNum = intNum + 1
ElseIf IsLike(strtemp, "[a-zA-Z]" Then
If strPreType = 3 Then
blnArray(3 = Left(blnArray(3, Len(blnArray(3 - 1 & intNum Else
intNum = 1
blnArray(3 = blnArray(3 & "- " & i & "/" & intNum
End If
strPreType = 3
intNum = intNum + 1
Else
strPreType = 0
End If
End If
Next
strtemp = ""
strArray = Split(blnArray(outPutType, "-"
For i = 1 To UBound(strArray
intNum = InStr(1, strArray(i, "/"
startPos = Mid(strArray(i, 1, intNum - 1
intlen = Mid(strArray(i, intNum + 1
If sumVar Then
dblSum = dblSum + WorksheetFunction.Asc(Mid(strText, startPos, intlen Else strtemp = strtemp & Mid(strText, startPos, intlen & " "
End If
Next
If sumVar Then
StringType = dblSum
Else
If Len(strtemp Then
StringType = Left(strtemp, Len(strtemp - 1 Else
StringType = "" End If
End If
End Function
本文档为【使用VBA判断单元格各字符是否为中文、英文、数字、符号的复杂解读】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。