阅: 3030 | 回: 1
等级:初学者
- 积分:0
- 财富值:0.0
- 身份:普通用户
利用正则表达式提取或删除汉字
在日常的工作应用中,我们经常与汉字打交道,下面这个自定义函数的功能,就是提取与删除字符串或单元格中汉字的自定义函数:
Function Hanzi(rng, Optional pd As Boolean = True) As String
'*******************************************
'时间:2010-09-28
'功能:提取给定字符串(单元格)中汉字与非汉字集
'说明:rng 原字符串或单元格
' pd 当为True时,提取汉字(默认),否则提取非汉字。
'发布:http://www.excelba.com
'******************************** ***********
With CreateObject("VBSCRIPT.REGEXP")
.Global = True
If pd Then
.Pattern = "[^\u4e00-\u9fa5]"
Else
.Pattern = "[\u4e00-\u9fa5]"
End If
Hanzi = .Replace(rng, "")
End With
End Function
应用示例:设A1里的值为 excel吧 - bengdeng 欢迎您!2010年9月28日
在B1设定公式:=Hanzi(A1)
结果为:吧欢迎您年月日
在C1设定公式::=Hanzi(A1,0)
结果为:excel - bengdeng !2010928
除此,也可以利用到其它的程序中,如下面这段程序是去除当前工作表中所有的汉字:
Sub 去除当前工作表中的汉字()
Dim tRan As Range
Application.ScreenUpdating = False
For Each tRan In ActiveSheet.UsedRange
tRan = Hanzi(tRan, 0)
Next
Application.ScreenUpdating = True
End Sub
在日常的工作应用中,我们经常与汉字打交道,下面这个自定义函数的功能,就是提取与删除字符串或单元格中汉字的自定义函数:
Function Hanzi(rng, Optional pd As Boolean = True) As String
'*******************************************
'时间:2010-09-28
'功能:提取给定字符串(单元格)中汉字与非汉字集
'说明:rng 原字符串或单元格
' pd 当为True时,提取汉字(默认),否则提取非汉字。
'发布:http://www.excelba.com
'******************************** ***********
With CreateObject("VBSCRIPT.REGEXP")
.Global = True
If pd Then
.Pattern = "[^\u4e00-\u9fa5]"
Else
.Pattern = "[\u4e00-\u9fa5]"
End If
Hanzi = .Replace(rng, "")
End With
End Function
应用示例:设A1里的值为 excel吧 - bengdeng 欢迎您!2010年9月28日
在B1设定公式:=Hanzi(A1)
结果为:吧欢迎您年月日
在C1设定公式::=Hanzi(A1,0)
结果为:excel - bengdeng !2010928
除此,也可以利用到其它的程序中,如下面这段程序是去除当前工作表中所有的汉字:
Sub 去除当前工作表中的汉字()
Dim tRan As Range
Application.ScreenUpdating = False
For Each tRan In ActiveSheet.UsedRange
tRan = Hanzi(tRan, 0)
Next
Application.ScreenUpdating = True
End Sub
我的个性签名