Vba 自定义项删除特殊字符、标点符号和;单元格内的空格,用于为Vlookups创建唯一密钥
我在VBA中拼凑了以下用户定义的函数,该函数允许我从任何给定的单元格中删除某些非文本字符 代码如下: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
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
通过myfor loop
对单元格中从位置1处的字符开始的每个字符执行此代码
希望这个答案有利于未来的人,如果他们偶然发现了我原来的问题 我还想包含一个普通的空格字符
——实际上,这对我来说毫无意义。如果包含空格,则Replace$
函数将用空格替换空格,只需在特殊字符的引用文本中使用空格即可。不需要转义。嗯,我已经试过了,我的UDF似乎仍然没有删除空间,我会发布我的更新code@AdamJ,你看到我上面的评论了吗?您的函数用空格替换空格。预计不会发生任何事情(因为第三个参数Replace$
等于“
”空格,只需将其替换为空字符串”
)哦,我想我明白你的意思了,我完全没有在代码中看到这一点。我真傻。我会更正并在修复后发回。谢谢你的帮助。