从Excel工作表上的字符串中删除unicode字符

时间:2018-01-18 15:17:24

标签: regex excel vba

我需要一些关于如何使用正则表达式来删除特殊字符(例如分数,指数,度数符号和字符串中的任何其他非正常字母)的指示。我知道下面的代码根据这些标准查找字符串,但它是否包含所有unicode字符?

代码注意事项:

Dim strPattern As String: strPattern = "[^\u0000-\u007F]"
Dim regEx As Object

Set regEx = CreateObject("VBScript.RegExp")
regEx.Global = True
regEx.IgnoreCase = True
regEx.Pattern = strPattern

For Each cell In ActiveSheet.Range("C:C") ' Define your own range here
    If strPattern <> "" Then              ' If the cell is not empty
        If regEx.Test(cell.Value) Then    ' Check if there is a match
            cell.Interior.ColorIndex = 6  ' If yes, change the background color
        End If
    End If
Next

1 个答案:

答案 0 :(得分:0)

这不使用正则表达式。

有许多潜在的“坏”角色。而不是试图删除它们,  保持“好”的。

选择一些单元格并运行这个短宏:

Sub UniKiller()
    Dim s As String, temp As String, i As Long
    Dim C As String

    s = ActiveCell.Value
    If s = "" Then Exit Sub
    temp = ""

    For i = 1 To Len(s)
        C = Mid(s, i, 1)
        If AscW(C) > 31 And AscW(C) < 127 Then
            temp = temp & C
        End If
    Next i
    ActiveCell.Value = temp
End Sub

如果您需要“清理”多个单元格,请将逻辑放在一个循环中。