Vba 自定义项删除特殊字符、标点符号和;单元格内的空格,用于为Vlookups创建唯一密钥

Vba 自定义项删除特殊字符、标点符号和;单元格内的空格,用于为Vlookups创建唯一密钥,vba,excel,vlookup,excel-udf,Vba,Excel,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

我在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
函数将特殊(输入为字符串)删除为字符串
将特殊字符设置为字符串
我想我会坚持多久
ssSpecialChars=“\/:*?”?™""®|.&@#(+`~)-+=^$!,“'这是您要删除的字符列表
对于i=1至Len(特殊字符)
sInput=替换$(sInput,Mid$(SSSpecialChars,i,1),“”)
下一个
removeSpecial=sInput
端函数
这部分代码显然定义了要删除的字符:

sSpecialChars = "\/:*?™""®<>|.&@#(_+`©~);-+=^$!,'"
ssspecialchars=“\/:*?™""®|.&@#(_+`©~);-+=^$!,'"
我还希望在此条件中包含一个普通空格字符“”。我想知道是否有某种转义字符,我可以用来做这件事

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

此外,我意识到我可以在Excel本身中使用=替换函数来实现这一点,但我想知道在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
函数将特殊(输入为字符串)删除为字符串
将特殊字符设置为字符串
我想我会坚持多久
ssSpecialChars=“\/:*?”?™""®|.&@# (+`~)-+=^$!,“'这是您要删除的字符列表
对于i=1至Len(特殊字符)
sInput=Replace$(sInput,Mid$(ssspecialchars,i,1),“”)这将删除空格
下一个
removeSpecial=sInput
端函数

因此,在收到simoco的建议后,我能够修改循环的

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
通过my
for loop
对单元格中从位置1处的字符开始的每个字符执行此代码


希望这个答案有利于未来的人,如果他们偶然发现了我原来的问题

我还想包含一个普通的空格字符
——实际上,这对我来说毫无意义。如果包含空格,则
Replace$
函数将用空格替换空格,只需在特殊字符的引用文本中使用空格即可。不需要转义。嗯,我已经试过了,我的UDF似乎仍然没有删除空间,我会发布我的更新code@AdamJ,你看到我上面的评论了吗?您的函数用空格替换空格。预计不会发生任何事情(因为第三个参数
Replace$
等于
”空格,只需将其替换为空字符串
)哦,我想我明白你的意思了,我完全没有在代码中看到这一点。我真傻。我会更正并在修复后发回。谢谢你的帮助。