代码如下:
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
以上代码为网络复制,版权归原作者所有!