参考上述两位高手的现在给出完善答案:考虑单位有可能是汉字、字母(汉字为一位、字母可能有两位);而名称与型号间可能有希腊字母的情况,按照字母与汉字、希腊字母的asc编码与ascw编码不一样的特点,现修改如下,运行良好~ Sub 提取名称型号单位() Dim a As String, i%, j% x = ActiveSheet.UsedRange.Rows.Count For j = 4 To x + 3 a = Trim(Cells(j, 2)) If Asc(Right(a, 1)) <> AscW(Right(a, 1)) Then'如果最后一位是汉字,则选择其为单位 Cells(j, 4) = Right(a, 1) Else'如果不为汉字(为字母) If VBA.IsNumeric(Mid(a, Len(a) - 1, 1)) Then'当倒数第二位为数字时 Cells(j, 4) = Right(a, 1) Else: Cells(j, 4) = Right(a, 2)'如果不为数字则选两位 End If End If For i = 1 To Len(a) - 1 If Asc(Mid(a, i, 1)) <> AscW(Mid(a, i, 1)) And Asc(Mid(a, i + 1, 1)) = AscW(Mid(a, i + 1, 1)) And Asc(Mid(a, i + 1, 1)) > 1 Then Cells(j, 2) = IIf(AscW(Mid(a, i, 1)) = 1060, Left(a, i - 1), Left(a, i)): Exit For'红色部分为希腊字母,可用or语句来添加. End If Next i On Error Resume Next Cells(j, 3) = Mid(a, Len(Cells(j, 2)) + 1, Len(a) - Len(Cells(j, 2)) - Len(Cells(j, 4))) Next j End Sub 缺陷:当型号最后一位与单位一样为字母时,就无法识别了,因为就没有规律了~ |