请问EXCEL如何去掉一个单元格里的英文和数字,只保留文字呢?

三楼的很详细,但是我试了却没成功。。是不是代码告诉错了呢?或者能再说明白一点吗?本人比较白痴,呵呵,谢谢。。。很想送分,但是我没有分了555.。对不起各位。。

我已经把所有的演示步骤录下来了,请查看下面动画:

http://hiphotos.baidu.com/dhxmr1110/pic/item/35a0375a59b9e3b3800a183a.jpg

宏最方便了。

打开excel,alt+F11,右侧你的文件VBAProject(***.xls),右击“插入--模块--双击模块,把下面代码粘贴进去,保存退出。重新打开excel,启用宏,就可以用了,具体A2=取值(取值(A1,"-zm"),"-sz")就可以得到了。

    Function 取值(rng, types As String) As String

    Dim obj As Object

    Set obj = CreateObject("VBSCRIPT.REGEXP")

    With obj

        .Global = True

        If types = "-hz" Then

            .Pattern = "[一-﨩]"

        ElseIf types = "-zm" Then

            .Pattern = "[a-zA-Z]"

        ElseIf types = "-sz" Then

            .Pattern = "\d"

        ElseIf types = "+hz" Then

            .Pattern = "^[一-﨩]"

        ElseIf types = "+zm" Then

            .Pattern = "[^a-zA-Z]"

        ElseIf types = "+sz" Then

            .Pattern = "[^0-9]"

        End If

        取值 = .Replace(rng, "")

    End With

End Function

'使用说明:

'去汉字:=取值(A2,"-hz")

'取汉字:=取值(A2,"+hz")

'去字母:=取值(A2,"-zm")

'取字母:=取值(A2,"+zm")

'去数字:=取值(A2,"-sz")

'取数字:=取值(A2,"+sz")

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-29
这样的问题还是交给word去处理比较好,复制到word中,按Ctrl+H,替换栏写“[a-z,A-Z,0-9]”(不含双引号),替换为一栏不写东西,全部替换,再复制回excel即可。
如果你单元格里的汉字是连续的也可以用公式=mid(a1,match(" ",midb(a1,row($1:$99),1),),lenb(a1)-len(a1))
第2个回答  2020-12-29
EXCEL数字、字母、汉字分离这三种方法每种都是值得学习的思路

Excel办公实战
05-24 · 优质教育领域创作者

不啰嗦,直奔主题……
看看如何提取,一般使用函数提取,难度较大

先看一下数据源:

分别提取数字、字母和汉字

方案1:传统函数公式法

传统的函数方式难度较大,这里只演示一下提取数字,其他不再演示

通用数字提取公式:

=MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17)),COUNT(--MID(A2,ROW($1:$99),1))+ISNUMBER(FIND(".",A2)))

简单解析一下:

1、MIN(FIND(ROW($1:$10)-1,A2&1/17)):获取数字首次出现的位置

2、COUNT(--MID(A2,ROW($1:$99),1))+ISNUMBER(FIND(".",A2))

数字+点 数量合计,其实也就是需要截取的长度

方案2:自定义函数-正则表达式

套模板真香!

自定义函数如下:

Function TQ(rng, types As String) As String
Dim obj As Object
Set obj = CreateObject("VBSCRIPT.REGEXP")
With obj
.Global = True
Select Case types
Case Is = "-hz" '去汉字
.Pattern = "[一-﨩]"
Case Is = "-zm" '去字母
.Pattern = "[a-zA-Z]"
Case Is = "-sz" '去数字
.Pattern = "[0-9\.]"
Case Is = "+hz" '取汉字
.Pattern = "[^一-﨩]"
Case Is = "+zm" '取字母
.Pattern = "[^a-zA-Z]"
Case Is = "+sz" '取数字
.Pattern = "[^0-9\.]"
End Select
TQ = .Replace(rng, "")
End With
End Function

方案3:Power Query

新工具,应付这种问题,简单小儿科

版本:2016,2010和2013的同学自己安装

数字:Text.Select([文本],{"0".."9","."})

字母:Text.Select([文本],{"A".."z"})

汉字:Text.Select([文本],{"一".."龟"})])

今天就到这里,简洁一些!

关注EXCEL办公实战,下次不迷路

搜索
输入文字自动生成表格
excel表格技巧分离文字
最常用的10个excel公式
八个常用的excel小技巧
excel自动转化为文字
十个excel必背公式
第3个回答  2010-01-25
感觉简单的公式做不了,用宏吧
第4个回答  2010-01-25
EXCEL帮助大全