假设要把第一列,工号及人员名单,拆分出来,显示一列工号,显示一列人员名称
只写了部分特殊字符,有需要可增加
Sub 提取文字和数字()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim cellValue As String
Dim numPart As String
Dim hanPart As String
Dim rowIndex As Long
Dim char As String
Dim isSpecial As Boolean
' 指定工作表
Set ws = ThisWorkbook.Sheets("人员名单")
' 定义特殊字符和字母
Dim specialChars As String
specialChars = "-_~……& /:;()¥@“”。,、?!.【】{}#%^*~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
' 确定最后一行
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' 遍历A列,提取数字和汉字
For i = 1 To lastRow
cellValue = ws.Range("A" & i).Value
numPart = ""
hanPart = ""
isSpecial = False
' 提取数字部分和汉字部分
For j = 1 To Len(cellValue)
char = Mid(cellValue, j, 1)
If IsNumeric(char) Then
numPart = numPart & char
ElseIf AscW(char) >= -40869 And AscW(char) <= -10242 Then
hanPart = hanPart & char
ElseIf InStr(specialChars, char) = 0 Then
hanPart = hanPart & char
End If
Next j
' 将数字部分放置在B列,汉字部分放置在C列
ws.Range("B" & i).Value = Val(numPart)
ws.Range("C" & i).Value = hanPart
Next i
End Sub