[英]hidden space in excel
我嘗試了幾乎所有方法(CLEAN,TRIM,SUBSTITUTE),嘗試刪除隱藏在文本開頭和結尾的字符。 就我而言,我從oracle ERP中下載了物料清單報告,發現項目代碼是隱藏字符的受害者。
經過如此多的發現,我能夠找到隱藏了哪個字符,並發現這是一個問號'? (通過另一個線程中的VBA代碼)在前端和后端。 您可以輸入此商品編號:11301-21
如果將以上內容粘貼到excel中並查看其長度= LEN(),則可以更好地理解我的問題。
對於這個問題,我需要一個好的解決方案。 因此請幫忙!
提前非常感謝您。
感謝Gary的Student ,因為他的回答啟發了我。
另外,我將此答案用於此代碼。
此函數將清除您數據的每個字符,因此它應該對您有用。 您需要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中將其用作公式的方式。 請注意弦線長度的差異:
希望這可以幫助
您有看起來像空格字符的字符,但不是。 它們是UniCode 8236和8237。
只需將它們替換為空格字符(ASCII 32)即可 。
編輯#1:
根據帖子中的字符串,以下VBA宏將用簡單的空格字符替換UniCode字符8236和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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.