一个单元格中有数字,字母,汉字,各种符号,而且分布是没有规则的,如何将汉字或符号去掉或提取?
发布网友
发布时间:2022-05-18 22:17
我来回答
共3个回答
热心网友
时间:2023-11-11 17:12
给楼主指明方向:使用“正则表达式”工具编写自定义函数即可达到要求。
“正则表达式”是提取具有某种特征字符串的最佳工具,可以用来提取汉字、数字、字母,以及提取具有某种有可描述的特征的字符串。
楼主可到我的空间查看我用正则表达式编写的文本正则式提取的自定义函数:
Function TEXTRACT(Text, Patrn, Optional ByVal fgf As String = "")
Dim regEx, Match, Matches ' 建立变量。
Set regEx = CreateObject("vbScript.regexp") 'New RegExp ' 建立正则表达式。
regEx.Pattern = Patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全局替换。
' regEx.MultiLine = True '设置多行匹配。
Set Matches = regEx.Execute(Text) ' 执行搜索。
For Each Match In Matches ' 遍历 Matches 集合。
RetStr = RetStr & fgf & Match
Next
TEXTRACT = Mid(RetStr, Len(fgf) + 1)
End Function
使用该自定义函数时,如要提取汉字,则在单元格中使用公式:
=TEXTRACT(原始数据单元格, "[一-龥]")
比如:=TEXTRACT(A1, "[一-龥]")
提取数字,则使用:
=TEXTRACT(A1, "[0-9]")
提取字母,则使用:
= TEXTRACT(a, "[A-Za-z]")
等等……
热心网友
时间:2023-11-11 17:13
说得具体点:“162ACG/12*工作能力93L40-659*AGE”你想得到什么?举例说?
你要的结果完全可以实现,但你的这个截图并不能表述明白你想要得到的结果是什么样子的?
热心网友
时间:2023-11-11 17:13
如果按照你发的这么规律,那很简单的中文字在当中嘛!
那只要获取左边n个字符和右边m个字符就可以了。
=left(要提取的单元格,n)+right(要提取的单元格,m)