在Excel中经常会遇到去除所有的中文,英文或者数字等情况。但是由于Excel并不支持一次替换所有的中文,英文,数字等,所以有些解决方法是复制到Word中进行替换,但是这种方法个人感觉比较麻烦不好用,因此提供一个利用VBA解决这个问题的方法.

具体操作如下:

使用“Alt+F11”打开开发者选项,在点击左侧的任意一个sheet,复制下面的代码内容,再点击左上角的绿色三角箭头运行即可

esayexcel 代码替换中文 excel替换所有中文_esayexcel 代码替换中文

代码内容如下:

整个工作簿的所有sheet删除中文:

Sub remove_cn_char()
    Dim Rng As Range
    Dim Reg
    Set Reg = CreateObject("vbscript.regexp")    '建立正则表达式
    Reg.Pattern = "[\u4e00-\u9fa5]"    '去汉字样式
    Reg.Global = True   '设置全局可用
    For Each sh In Worksheets    '遍历所有的sheet
        For Each Rng In sh.UsedRange   '遍历所有的单元格
       		On Error Resume Next   '防止一些错误值引起的报错
            Rng = Reg.Replace(Rng, "")
        Next
    Next
End Sub

删除特定sheet中的英文

Sub remove_cn_char()
    Dim Rng As Range
    Dim Reg
    Set Reg = CreateObject("vbscript.regexp")    '建立正则表达式
    Reg.Pattern = "[a-zA-Z]"        '去英文样式
    Reg.Global = True    '设置全局可用
    With Sheets("test")    ‘设置要替换的sheet名称
        For Each Rng In sh.UsedRange
        	On Error Resume Next    '防止一些错误值引起的报错
            Rng = Reg.Replace(Rng, "")
        Next
    End With
End Sub

在上述代码中,我们通过正则表达式对Excel中的中英文进行替换。如果需要替换不同的内容,则替换上述代码中的正则表达式样式即可。我们常用的正则表达式样式如下:

  • 匹配中文字符的正则表达式:[\u4e00-\u9fa5]
  • 匹配双字节字符(即中文输入法状态下的所有输入字符,例如中文,中文标点符号等)的正则表达式:[^\x00-\xff]
  • 英文字母:[a-zA-Z]
  • 数字:[0-9]

当然如果你有其他的特殊的规则,也可以自己百度或书写相关正则表达式进行删除或替换。

替换中英文字符

有的时候处理文本使我们需要替换对应的中英文字符而非删除,例如需要对照两个文本,但是两个文本中的标点符号不一致,有的是中文,有的是英文,因此需要将两个文本中的符号统一。下面的程序可将中文标点符号替换为英文标点符号:

Sub test()
    Dim ar, br, cr, r&, c&, i&, j&, m&
    br = Array(",", "\", ".", "!", "?", ";", ":", "'", "'", """", """", "[", "]", "{", "}", "(", ")")
    cr = Split(",,、,。,!,?,;,:,‘,’,“,”,【,】,{,},(,)", ",")
    With ActiveSheet
        With .UsedRange
            ar = .Value
            r = .Row
            c = .Column
        End With
        On Error Resume Next
        For i = 1 To UBound(ar)
            For j = 1 To UBound(ar, 2)
                For m = LBound(cr) To UBound(cr)
                    ar(i, j) = Replace(ar(i, j), cr(m), br(m))
                Next m
            Next j
        Next i
        .Cells(r, c).Resize(UBound(ar), UBound(ar, 2)) = ar
    End With
End Sub

同理,需要英文转中文,或者需要添加其他字符的话直接修改对应的br和cr即可