excel 如何只提取某列单元格内的字母和数字,不提取汉字?(每一行字母、数字的个数都不相同)

求公式或方法

假定原始数据在A列,用VBA在B列只提取其中的字母和数字:

插入一命令按钮并编程如下:

Private Sub CommandButton1_Click()

Dim rag As Range, i As Integer, a$

Range("B:B").ClearContents

For Each rag In Range("A1:A" & Range("A65536").End(xlUp).Row)

  a$ = ""

  For i = 1 To Len(rag)

    If VBA.Asc(Mid(rag, i, 1)) >= 0 Then

      a$ = a$ & Mid(rag, i, 1)

    End If

  Next i

  rag.Offset(, 1) = a$

Next

End Sub

例如:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-15
如果数字和字母都在前面,数据在A列
可以在B1单元格输入
=LEFT(A1,LEN(A1)*2-LENB(A1))

如果有空格,可以先去空
=LEFT(TRIM(A1),LEN(A1)*2-LENB(A1))

然后下拉填充即可追问

大哥,你太赞了!!!!!小弟用你的公式做了一下,大多数都成功了,唯独遇到一点小问题,
"" LZ王赶顺" " LZ"
" RQ6赵晨娟" " RQ6"
" SJZ李永亮" " SJZ"
" TSFR李少一" " TSFR"
" ZJKXH杨燕飞" " ZJKXH"
" ZJKYX崇树兰" " ZJKYX"
" ZJKYX史爱明 " " ZJKYX史"
" ZJKYX宋海英" " ZJKYX"
看到了吗,叫史爱明的那个,用这个公式一做,多出来一个字……这是什么情况?

追答

主要看你的数据源,到底有哪些规律.我这个公式只是一般的常规性的截取,如果你有特殊的,需要特别说明的

如果有比较多的空格,需要先去除多余的空格
=LEFT(SUBSTITUTE(A2," ",""),LEN(SUBSTITUTE(A2," ",""))*2-LENB(SUBSTITUTE(A2," ","")))

本回答被提问者采纳
第2个回答  2012-06-24
假设数据在A列:B1输入:
=IF(LENB(LEFT(A1,1))=1,LEFT(A1,LENB(A1)-(LENB(A1)-LEN(A1))*2),RIGHT(A1,LENB(A1)-(LENB(A1)-LEN(A1))*2))
就行了,用不着编辑宏
相似回答