现在的位置: 首页 > Excel 杂记 > 正文

自定义函数之提取汉字

2015年09月13日 Excel 杂记 ⁄ 共 1106字 ⁄ 字号 暂无评论 ⁄ 阅读 1,924 次
本文非原创,属网络收集
 

从字符串中提取或者删除汉字是在我们日常使用 Excel 中时常遇到的问题,这里提供一个从网络上收集而来的提取或者删除汉字的自定义函数,方便大家日常使用。

   
'---------------------------------------------------
'功能:提取字符串中汉字或者非汉字
'说明:Rg  原字符串或单元格
'      Et  为True时,提取汉字,否则为提取非汉字
'发布:http://www.excelfans.com
'---------------------------------------------------
Function ExtractHanzi(Rg As Variant, _
                      Optional Et As Boolean = True) As String
    With CreateObject("VBSCRIPT.REGEXP")
        .Global = True
        If Et Then
            .Pattern = "[^\u4e00-\u9fa5]"
        Else
            .Pattern = "[\u4e00-\u9fa5]"
        End If
        ExtractHanzi = .Replace(Rg, "")
    End With
End Function
    

实际应用:

  • 作为一个函数使用在工作表的公式中,如:单元格 A1 的值为 "ExcelFans.com 欢迎你",然后我们在 A2 中键入公式 =ExtractHanzi(A1),显示结果为:欢迎你:

001

  • 把它用到其他的代码中,以下代码就是去除所选定区域中的所有汉字
'---------------------------------------------------
'功能:删除选定区域中所有汉字
'发布:http://www.excelfans.com
'---------------------------------------------------
Sub DelAllHanzi()
    Dim Rg As Range, Rg1 As Range
    Dim xAddress As String
    On Error Resume Next
    xAddress = ActiveSheet.UsedRange.Address
    Set Rg = Application.InputBox("请选择一个区域:", "ExcelFans.com", xAddress, , , , , 8)
    If Rg Is Nothing Then Exit Sub
    Set Rg = Application.Intersect(Rg, ActiveSheet.UsedRange)
    If Rg Is Nothing Then Exit Sub
    For Each Rg1 In Rg
        Rg1 = ExtractHanzi(Rg1, False)
    Next
End Sub

给我留言

您必须 [ 登录 ] 才能发表留言!