我有一张表,名称列包含字母和数字,我现在要提取字母和数字,把它们分为两列,可小弟找不到合适的方法函数,名称列示例:AFEA 12、AFEJ 12、BB2A 11、N-RTC1-2
要得到的结果:|AFEA|12|  
请问有没有这样的函数,提供这样的功能,名称列长度不一样,还是只能手动修改了,自己写个函数还是有困难!!!

解决方案 »

  1.   

    用一个循环结构,判断它的ASC值.
      

  2.   

    就是一列的名称为:AFEC第二列为数字:11
    它们的全名是:AFEC 11
    我看EXCEL 有列的合并方法,就没有它的诉分方法如;AFEC 11=AFEC&11
      

  3.   

    我用了一很笨的方法:就是得到名称全名列的字符串,用一个函数来判断是否是字符:
    Function is_name(str As Variant) As String
        If Not IsNumeric(Mid(str, 1, 1)) Then
           is_name = True
        Else
           is_name = False
        End If
    End Function
    ------------------------------------
    Private Sub CommandButton1_Click()
       Dim i, j, max, num As Integer
       Dim str1 As String
       Set tb2 = Worksheets(2).Range("a1:a1000")
        max = Application.WorksheetFunction.max(tb2)
        For i = 1 To max
            str1 = Trim(Worksheets(2).Cells(i + 1, "D").Value)
            num = Len(str1)
            str2 = ""
            str3 = ""
          For j = 1 To num
            zim = Mid(str1, j, 1) '//È¡µÃ×Ö·û
             flag = is_name(zim)  '//ÅжÏÊDz»ÊÇÊý×Ö
            If (flag = True) Or (j = 3) Then  '//j=3ÊÇÒª±£ÁôµÚÈý¸öÊý×Ö£¬ÒòΪËüÊÇÃû³ÆµÄ×é³É²¿·Ö
              str2 = str2 + zim   '×Öĸ´®
             ' MsgBox "×Öĸ£º" & str2
            ElseIf (flag = False) Then
              str3 = str3 + zim  'Êý×Ö´®
             ' MsgBox "Êý×Ö£º" & str3
            End If
                '//Êä³ö×Ö´®
                Worksheets(2).Cells(i + 1, "E").Value = Trim(UCase(str2))
                Worksheets(2).Cells(i + 1, "F").Value = Trim(str3)
          Next j
        Next i
    End Sub