我尝试了几乎所有的方法(CLEAN,TRIM,SUBSTITUTE)试图删除隐藏在文本开头和结尾的字符。就我而言,我从oracle ERP下载了物料清单报告,发现物品代码是隐藏字符的受害者。
经过这么多调查结果后,我能够追踪隐藏哪个角色,并发现它是一个问号'?' (通过另一个线程中的VBA代码)在前端和末尾。您可以使用此商品代码:11301-21
如果将以上内容粘贴到Excel中并查看其长度= LEN(),则可以更好地理解我的问题。
我需要一个很好的解决方案来解决这个问题。所以请帮忙!
非常感谢你。
答案 0 :(得分:2)
感谢Gary's Student,因为他的回答激发了我的灵感。
此外,我使用this answer代码。
此函数将清除数据的每个字符,因此它应该适合您。您需要2个函数:1清除Unicode字符,另一个清理项目代码_
Public Function CLEAN_ITEM_CODE(ByRef ThisCell As Range) As String
If ThisCell.Count > 1 Or ThisCell.Count < 1 Then
CLEAN_ITEM_CODE = "Only single cells allowed"
Exit Function
End If
Dim ZZ As Byte
For ZZ = 1 To Len(ThisCell.Value) Step 1
CLEAN_ITEM_CODE = CLEAN_ITEM_CODE & GetStrippedText(Mid(ThisCell.Value, ZZ, 1))
Next ZZ
End Function
Private Function GetStrippedText(txt As String) As String
If txt = "–" Then
GetStrippedText = "–"
Else
Dim regEx As Object
Set regEx = CreateObject("vbscript.regexp")
regEx.Pattern = "[^\u0000-\u007F]"
GetStrippedText = regEx.Replace(txt, "")
End If
End Function
这就是我在Excel中使用它作为公式的原因。注意字符串Len的区别:
希望这有帮助
答案 1 :(得分:1)
你有外观的字符,就像空格字符一样,但不是。它们是UniCode 8236&amp; 8237。
只需用空格字符(ASCII 32)替换它们。
修改#1:强>
根据帖子中的字符串,以下VBA宏将用简单的空格字符替换UniCode字符8236 amd 8237:
Sub Kleanup()
Dim N1 As Long, N2 As Long
Dim Bad1 As String, Bad2 As String
N1 = 8237
Bad1 = ChrW(N1)
N2 = 8236
Bad2 = ChrW(N2)
Cells.Replace what:=Bad1, replacement:=" ", lookat:=xlPart
Cells.Replace what:=Bad2, replacement:=" ", lookat:=xlPart
End Sub