Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 删除特殊字符_Excel_Vba_Special Characters - Fatal编程技术网

Excel 删除特殊字符

Excel 删除特殊字符,excel,vba,special-characters,Excel,Vba,Special Characters,我这里有一个用于excel的VB代码,用于删除特殊字符。我的问题是为什么一些特殊字符被删除了,比如c列中的一些特殊字符没有改变或者被删除了 代码: 较短: 亚无效 暗淡的 对于数组中的每一个e–欧元“,€,–α,®,®;,&8212_ Ã,Ã,a,c,39;,x96;,Ã_ ​, …, ®, ‹ 选择案例e 案例–欧元“ 范围A1:B1,D1。全部重新聚集。替换e, 范围C1,E1.Enterecumn.Replace e,: 案例3 范围A1:B1,D1:E1.Enterecu

我这里有一个用于excel的VB代码,用于删除特殊字符。我的问题是为什么一些特殊字符被删除了,比如c列中的一些特殊字符没有改变或者被删除了

代码:

较短:

亚无效 暗淡的 对于数组中的每一个e–欧元“,€,–α,®,®;,&8212_ Ã,Ã,a,c,39;,x96;,Ã_ ​, …, ®, ‹ 选择案例e 案例–欧元“ 范围A1:B1,D1。全部重新聚集。替换e, 范围C1,E1.Enterecumn.Replace e,: 案例3 范围A1:B1,D1:E1.Enterecumn.Replace e, 范围C1.整个重新聚集,替换e,o 案例&x96; 范围A1:B1,D1:E1.Enterecumn.Replace e, 范围C1.Enterecumn.Replace e,: 其他情况 范围A:E.替换E, 结束选择 下一个e 端接头
很久以前,我发现了一个函数,我认为它可以更好地满足您的需求:

Public Function RepLetters(txt As String) As String
 
Dim SAcentos As String
Dim SSemAcentos As String
Dim STemp As String
Dim i As Long

'All letters to be replaced
SAcentos = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ"
  
'Letters to replace on
SSemAcentos = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"
  
'sTemp is the received string
STemp = text
  
' Loop through every letter of 'sAcentos' and replace by
' corresponding letter in 'sSemAcentos'
For i = 1 To Len(SAcentos)
    STemp = Replace(STemp, Mid$(SAcentos, i, 1), Mid$(SSemAcentos, i, 1))
Next i
  
'return new string
RepLetter = STemp
  
End Function

您需要根据自己的需要调整sAcentos和sSemAcentos。该函数也可以直接在电子表格上调用。

这是一个很好的例子。除上述内容外:VBA对特定于HTML的序列(如®;或&8212;)没有特殊意义,因此这些序列是按字面意思进行的。然后将这些文字字符串放在[]类似模式的方括号,因此要求对任何单个字母进行OR匹配,因此只有当e是一个文字字符开始时才会匹配。最后,在VBA源代码中使用文字Unicode字符。对此,有什么更好的解决方案?对于A1、B1和D1范围,它是否只检查第一个单元格?eNTIRecollumn使用整个列。OP并没有尝试简单的1对1字符替换,这段代码表面上是为其编写的。
Public Function RepLetters(txt As String) As String
 
Dim SAcentos As String
Dim SSemAcentos As String
Dim STemp As String
Dim i As Long

'All letters to be replaced
SAcentos = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ"
  
'Letters to replace on
SSemAcentos = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"
  
'sTemp is the received string
STemp = text
  
' Loop through every letter of 'sAcentos' and replace by
' corresponding letter in 'sSemAcentos'
For i = 1 To Len(SAcentos)
    STemp = Replace(STemp, Mid$(SAcentos, i, 1), Mid$(SSemAcentos, i, 1))
Next i
  
'return new string
RepLetter = STemp
  
End Function