利用VBA批量刪除Excel中的中文/英
↓↓↓歡迎關注我的公眾號,在這里有數據相關技術經驗的優質原創文章↓↓↓
在中經常會遇到去除所有的中文,英文或者數字等情況。但是由于并不支持一次替換所有的中文,英文,數字等,所以有些解決方法是復制到Word中進行替換,但是這種方法個人感覺比較麻煩不好用,因此提供一個利用VBA解決這個問題的方法.
具體操作如下:
使用“Alt+F11”打開開發者選項,在點擊左側的任意一個,復制下面的代碼內容,再點擊左上角的綠色三角箭頭運行即可
代碼內容如下:
整個工作簿的所有刪除中文:
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
刪除特定中的英文
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
在上述代碼中,我們通過正則表達式對中的中英文進行替換。如果需要替換不同的內容,則替換上述代碼中的正則表達式樣式即可。我們常用的正則表達式樣式如下:
當然如果你有其他的特殊的規則,也可以自己百度或書寫相關正則表達式進行刪除或替換。
替換中英文字符
有的時候處理文本使我們需要替換對應的中英文字符而非刪除,例如需要對照兩個文本,但是兩個文本中的標點符號不一致,有的是中文,有的是英文,因此需要將兩個文本中的符號統一。下面的程序可將中文標點符號替換為英文標點符號:
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即可