UDF删除特殊字符,标点符号&单元格中的空格为Vlookup创建唯一键

时间:2014-03-06 20:59:24

标签: excel vba excel-vba vlookup excel-udf

我在VBA中将以下用户定义函数一起攻击,允许我从任何给定的单元格中删除某些非文本字符。

代码如下:

Function removeSpecial(sInput As String) As String
    Dim sSpecialChars As String
    Dim i As Long
    sSpecialChars = "\/:*?™""®<>|.&@#(_+`©~);-+=^$!,'" 'This is your list of characters to be removed
    For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), " ")
    Next
    removeSpecial = sInput
End Function

这部分代码显然定义了要删除的字符:

sSpecialChars = "\/:*?™""®<>|.&@#(_+`©~);-+=^$!,'"

我还希望在此条件中包含正常的空格字符“”。我想知道是否有某种逃脱角色可以用来做到这一点?

因此,我的目标是能够运行此功能,并从给定的Excel单元中删除所有指定的字符,同时还删除所有空格。

另外,我意识到我可以在Excel中使用= SUBSTITUTE函数执行此操作,但我想知道它是否可以在VBA中使用。

编辑:它已修复!谢谢simoco!

Function removeSpecial(sInput As String) As String
    Dim sSpecialChars As String
    Dim i As Long
    sSpecialChars = "\/:*?™""®<>|.&@# (_+`©~);-+=^$!,'" 'This is your list of characters to be removed
    For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "") 'this will remove spaces
    Next
    removeSpecial = sInput
End Function

1 个答案:

答案 0 :(得分:1)

所以在simoco的建议之后,我能够修改我的for loop

For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "") 'this will remove spaces
    Next

现在,对于电子表格中给定单元格中的每个字符,特殊字符将被删除并替换为空。这主要是通过如下所示一起使用的Replace $和Mid $函数来完成的:

sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "") 'this will remove spaces

此代码将通过我的for loop为位置1中字符开头的单元格中的每个字符执行。

希望如果遇到我原来的问题,这个答案将有益于某人。