2,462
社区成员
发帖
与我相关
我的任务
分享
Dim i, j, k, h As Integer
Dim l, m, n As String
For i = 1 To 995
n = "a"
k = Len(Cells(i, 1))
m = Cells(i, 1)
For j = 1 To k
l = Mid(m, j, 1)
If LenB(l) = 1 Then n = n & l
Next j
Sheet2.Cells(i, 2).Value = n
Next i
Dim hz As String
Dim yw As String
Dim hzyw As String
hz = "汉字"
yw = "English"
hzyw = "汉字English"
Debug.Print Len(hz), Len(yw), Len(hzyw)
Debug.Print LenB(hz), LenB(yw), LenB(hzyw)
Debug.Print LenB(StrConv(hz, vbFromUnicode)), LenB(StrConv(yw, vbFromUnicode)), LenB(StrConv(hzyw, vbFromUnicode))
' 2 7 9
'4 14 18
'4 7 11
Private Sub Command1_Click()
Dim strItems(1) As String, strSource As String, strTemp As String
Dim i As Integer, j As Integer
strItems(0) = "D5-78某某工厂"
strItems(1) = "某某公司XHJ-123"
For i = 0 To 1
strTemp = ""
strSource = strItems(i)
For j = 1 To Len(strSource)
If Not Mid(strSource, j, 1) Like "*[!0-9A-Za-z\-]*" Then strTemp = strTemp & Mid(strSource, j, 1)
Next j
MsgBox strTemp
Next i
End Sub
Private Sub Main()
'Dim i, j, k, h As Integer
'Dim l, m, n As String
Dim i%, j%, k%, h As Integer
Dim m As String
'For i = 1 To 995
For i = 1 To 4
m = Sheet1.Cells(i, 1).Text
h = Len(m)
For j = 1 To h
If (0 < Asc(Mid$(m, j, 1))) Then Exit For
Next
If (j > h) Then
m = "***" ' 文字全是中文
Else
For k = j To h
If (0 > Asc(Mid$(m, k, 1))) Then Exit For
Next
m = Mid$(m, j, k - j)
End If
Sheet1.Cells(i, 2).Value = m
Next
End Sub
'处理结果:
' D5-78某某工厂 D5-78
' 某某公司XHJ-123 XHJ-123
' 全中文字符串测试 ***
' ABC123456 ABC123456
Private Sub Main()
Dim i%, reg As Object
Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.Pattern = "[\u4e00-\u9fa5]" '匹配中文都删除,如果只保留数字字母用"[^\da-zA-Z\-]"
For i = 1 To 995
Sheet1.Cells(i, 2).Value = reg.Replace(Sheet1.Cells(i, 1).Text, "")
Next
Set reg = Nothing
End Sub
不放弃任何使用正则的机会,哈哈